what's in it for me? Ian Truslove :: Boulder Linux User Group ::

Similar documents
Copyright 2016 Pivotal. All rights reserved. Cloud Native Design. Includes 12 Factor Apps

Heroku. Rimantas Kybartas

Cloud-Native Applications. Copyright 2017 Pivotal Software, Inc. All rights Reserved. Version 1.0

The 12-Factor app and IBM Bluemix IBM Corporation

gcp / gke / k8s microservices

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

DESIGNING APPLICATIONS FOR CONTAINERIZATION AND THE CLOUD THE 12 FACTOR APPLICATION MANIFESTO

12 Factors to Cloud Success. Rafael Benevides

Who is Docker and how he can help us? Heino Talvik

Building Microservices with the 12 Factor App Pattern

12 (15) Factor App Workshop

UP! TO DOCKER PAAS. Ming

Travis Cardwell Technical Meeting

Getting Started With Containers

[Docker] Containerization

INDIGO PAAS TUTORIAL. ! Marica Antonacci RIA INFN-Bari

Con$nuous Deployment with Docker Andrew Aslinger. Oct

Think Small to Scale Big

Supporting Docker in Emulab-Based Network Testbeds. David Johnson, Elijah Grubb, Eric Eide University of Utah

Knative: Building serverless platforms on top of Kubernetes

AALOK INSTITUTE. DevOps Training

CNA1699BU Running Docker on your Existing Infrastructure with vsphere Integrated Containers Martijn Baecke Patrick Daigle VMworld 2017 Content: Not fo

Index. Bessel function, 51 Big data, 1. Cloud-based version-control system, 226 Containerization, 30 application, 32 virtualize processes, 30 31

VMworld 2017 Content: Not for publication #CNA1699BE CONFIDENTIAL 2

ovirt and Docker Integration

Docker 101 Workshop. Eric Smalling - Solution Architect, Docker

The age of orchestration

PARTLY CLOUDY DESIGN & DEVELOPMENT OF A HYBRID CLOUD SYSTEM

docker & HEP: containerization of applications for development, distribution and preservation

Simplified CICD with Jenkins and Git on the ZeroStack Platform

Red Hat Atomic Details Dockah, Dockah, Dockah! Containerization as a shift of paradigm for the GNU/Linux OS

Deployment Patterns using Docker and Chef

Docker. Master the execution environment of your applications. Aurélien Dumez. Inria Bordeaux - Sud-Ouest. Tuesday, March 24th 2015

Investigating Containers for Future Services and User Application Support

Leveraging Docker and CoreOS to provide always available Cassandra at Instaclustr

ISLET: Jon Schipp, AIDE jonschipp.com. An Attempt to Improve Linux-based Software Training

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

The Long Road from Capistrano to Kubernetes

Using DC/OS for Continuous Delivery

Splunk N Box. Splunk Multi-Site Clusters In 20 Minutes or Less! Mohamad Hassan Sales Engineer. 9/25/2017 Washington, DC

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

Installing and Using Docker Toolbox for Mac OSX and Windows

bootmachine Documentation

Table of Contents DevOps Administrators

User Workspace Management

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

A Hands on Introduction to Docker

Red Hat OpenShift Application Runtimes 0.1

SBB. Java User Group 27.9 & Tobias Denzler, Philipp Oser

Amir Zipory Senior Solutions Architect, Redhat Israel, Greece & Cyprus

Upcoming Services in OpenStack Rohit Agarwalla, Technical DEVNET-1102

Harbor Registry. VMware VMware Inc. All rights reserved.

GitLab-CI and Docker Registry

Dockerfile Best Practices

Container-based virtualization: Docker

Getting Started With Amazon EC2 Container Service

AZURE CONTAINER INSTANCES

An introduction to Docker

Red Hat OpenShift Application Runtimes 1

ROBIN SYSTEMS. Containerizing Oracle: Not Thinking About It Yet? You Should Be!!!

Important DevOps Technologies (3+2+3days) for Deployment

Installation and setup guide of 1.1 demonstrator

DEVOPS COURSE CONTENT

Java Architectures A New Hope. Eberhard Wolff

Docker & Chef. Containers. Containers and Docker 8/4/14. Linux containers (LXC) Single operating system Multiple isolated, working configurations

Table of Contents 1.1. Introduction. Overview of vsphere Integrated Containers 1.2

Automation through Chef Opscode

Infoblox Kubernetes1.0.0 IPAM Plugin

DevOps Course Content

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

Ubuntu LTS Install Guide

TECHNICAL BRIEF. Scheduling and Orchestration of Heterogeneous Docker-Based IT Landscapes. January 2017 Version 2.0 For Public Use

Set up, Configure, and Use Docker on Local Dev Machine

Redhat OpenStack 5.0 and PLUMgrid OpenStack Networking Suite 2.0 Installation Hands-on lab guide

Stephan Hochdörfer //

SECURE PRIVATE VAGRANT BOXES AND MORE WITH A BINARY REPOSITORY MANAGER. White Paper

Table of Contents 1.1. Overview. Containers, Docker, Registries vsphere Integrated Containers Engine

Table of Contents. Configure and Manage Logging in to the Management Portal Verify and Trust Certificates

Ruby in the Sky with Diamonds. August, 2014 Sao Paulo, Brazil

Docker and Oracle Everything You Wanted To Know

Red Hat Quay 2.9 Deploy Red Hat Quay - Basic

Multi-Cloud and Application Centric Modeling, Deployment and Management with Cisco CloudCenter (CliQr)

Gunnery Documentation

" Qué me estás container?" Docker for dummies

Multi-Cloud and Application Centric Modeling, Deployment and Management with Cisco CloudCenter (CliQr)

Applying Container Technology to the Virtualized Ground System

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

Blockchain on Kubernetes

Arup Nanda VP, Data Services Priceline.com

Introduction to Docker. Antonis Kalipetis Docker Athens Meetup

Taming your heterogeneous cloud with Red Hat OpenShift Container Platform.

DevOps Workflow. From 0 to kube in 60 min. Christian Kniep, v Technical Account Manager, Docker Inc.

Microservice Deployment. Software Engineering II Sharif University of Technology MohammadAmin Fazli

Microsoft Cloud Workshop. Containers and DevOps Hackathon Learner Guide

CS-580K/480K Advanced Topics in Cloud Computing. Container III

Docker at Lyft Speeding up development Matthew #dockercon

Ansible Tower Quick Setup Guide

Beyond 1001 Dedicated Data Service Instances

Configure a Small Alpine Linux Docker Image on IOx

Migration of Existing NSM Server from standalone to an Extended HA environment

Transcription:

what's in it for me? Ian Truslove :: Boulder Linux User Group :: 2014-03-13

First: the end

Docker: What s in it for me? Devs: http://xkcd.com/303/ DevOps: http://xkcd.com/149/

Docker: What s in it for me? Devs: DevOps: Docker gives you a really easy way to find and use pre-packaged system components to use in conjunction with your app code. Docker gives the Devs a straightforward way to declaratively package deployable, repeatable, selfcontained system components.

About me

Context building and deploying highly scalable app infrastructures

Methodology: The Twelve-Factor App I. Codebase VII. Port binding One codebase tracked in revision control, many deploys Export services via port binding II. Dependencies VIII. Concurrency Explicitly declare and isolate dependencies Scale out via the process model III. Config IX. Disposability Store config in the environment Maximize robustness with fast startup and graceful shutdown IV. Backing Services X. Dev/prod parity Treat backing services as attached resources Keep development, staging, and production as similar as possible V. Build, release, run XI. Logs Strictly separate build and run stages Treat logs as event streams VI. Processes XII. Admin processes Execute the app as one or more stateless processes Run admin/management tasks as one-off processes http://12factor.net/

introducing

About Docker From www.docker.io/the_whole_story: Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.

https://www.docker.io/static/img/about/docker_container.jpg

Docker is built on LXC From linuxcontainers.org: LXC is often considered as something in the middle between a chroot on steroids and a full fledged virtual machine. The goal of LXC is to create an environment as close as possible as a standard Linux installation but without the need for a separate kernel.

https://www.docker.io/static/img/about/docker_vm.jpg

What does Docker provide? Again, from www.docker.io/the_whole_story: Docker runs three ways: as a daemon to manage LXC containers on your Linux host as a CLI which talks to the daemon's REST API as a client of Repositories that let you share what you've built

Supported platforms See www.docker.io/gettingstarted/#h_installation Directly: Ubuntu Arch Linux Gentoo Fedora OpenSuse FrugalWare Binaries* Virtualized: OSX Windows EC2 Rackspace Google

Binary requirements iproute2 version 3.5 or later (build after 201205-21), and specifically the ip utility iptables version 1.4 or later The LXC utility scripts (http://lxc.sourceforge. net) version 0.8 or later Git version 1.7 or later XZ Utils 4.9 or later

Not (yet) ready for production heh, what do they know https://pbs.twimg.com/profile_images/1263403750/riverscuomo-mustache.jpg

Docker ecosystem

Base image catalog Official Ubuntu Centos 6.4 Busybox Unofficial Gentoo Arch OpenSUSE Debian etc...

Images: 3rd party software > docker search database NAME DESCRIPTION STARS deis/database Database server for the Deis open source P... 2 [OK] mminke/mongodb-x86-64-2.4.8 This is a mongo db image which downloads t... 1 [OK] bradrydzewski/neo4j Neo4j graph database running on Ubuntu Pre... 1 bbytes/orientdb Image with orient db. The database and ba... 1 [OK] kamui/postgresql PostgreSQL 9.3 with configurable login/dat... 1 [OK] luisarmando/docker-postgresql Postgresql 9.3 docker repository This can... 1 [OK] tpires/neo4j Neo4j is a highly scalable, robust (fully... 1 [OK] mhansen/sequelize-contribution Docker image containing a MySQL and Postgr... 0 skardan/cassandra Cassandra Database 0 erasche/chado A Chado database container. Contains a ful... 0 tpires/sonar-mysql SonarQube is an open platform to manage co... 0 sminot/database TRUSTED [OK] 0 hwuethrich/bamboo-agent Easily scale your Atlassian Bamboo infrast... 0 stephendl/releasemetrics_postgres93 A postgres database with and empty release... 0 turnkeylinux/mysql-13.0 TurnKey MySQL - Relational Database Manage... 0 dharmamike/dc-pgsql This container runs a PostgreSQL database... 0 <truncated> OFFICIAL [OK] [OK]

Further afield... A little searching yields: Container hosting: Stackdock, Orchard, dotcloud (aka Docker, Inc ) Image hosting: Quay.io DIY PaaS: Dokku, Deis, Flynn, Tsuru,...

Basic Usage

Setup: Vagrant VM Vagrantfile Vagrant.configure(VAGRANTFILE_API_VERSION) do config config.vm.box = "precise64" # System provisioning shell script - git, dev tools config.vm.provision "shell", path: "bin/provision.sh" # Basic docker provisioning config.vm.provision "docker", images: ["ubuntu"] #... end

Docker basics: curl a URL > docker pull ubuntu Pulling repository ubuntu... Download complete > docker run ubuntu uname -a Linux 03faf5dbff1e 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux > docker run ubuntu curl 2014/03/07 05:15:55 Unable to locate curl

Docker basics: install software > docker run ubuntu apt-get update... get:12 http://archive.ubuntu.com precise-security/universe i386 Packages [95.9 kb] Fetched 3068 kb in 3s (920 kb/s) Reading package lists... > docker ps -l CONTAINER ID ce6f4a44dec7 IMAGE ubuntu:12.04 COMMAND apt-get update CREATED About a minute ago

Docker basics: commit an image > docker commit ce6f iant/basics-1 4011ace0088fe9389044505e85ed1b03e6c47d3e14856df<snip> > docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ian/basics-1 latest 4113cd2b3e07 6 seconds ago 224.5 MB

Docker basics: more installs > docker run iant/basics-1 apt-get install -y curl Reading package lists... Building dependency tree... The following extra packages will be installed: ca-certificates krb5-locales libasn1-8-heimdal... > docker commit `docker ps -l -q` iant/basics-2 34490e7469d5b5b24ab74e4af300ffe0f17a0a31ab8549<snip>

Docker basics: using the image > docker run iant/basics-2 curl -is www.google.com HTTP/1.1 200 OK Expires: -1 Cache-Control: private, max-age=0 X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic Transfer-Encoding: chunked <!doctype html><html...

Docker basics: Dockerfiles FROM ubuntu:12.04 RUN apt-get update # Install curl RUN apt-get install -y curl

Docker basics: Building Dockerfiles > docker build -t iant/basics-3. Uploading context 2.56 kb Uploading context Step 0 : FROM ubuntu:12.04 ---> 9cd978db300e Step 1 : RUN apt-get update ---> Running in 3f898a80705a... > docker run iant/basics-3 curl -is www.google.com HTTP/1.1 200 OK Expires: -1...

Docker basics: publishing the image > docker login Username (iant): Password: ****** > docker push iant/basics-2 The push refers to a repository [ian/basics-2] (len: 1) Sending image list Pushing repository ian/basics-2 (1 tags) 511136ea3c5a: Image already pushed, skipping 4011ace0088f: Image successfully pushed 34490e7469d5: Image successfully pushed Pushing tag for rev [d55c21891493] on {https://registry-1. docker.io/v1/repositories/iant/demo2/tags/latest}

Use Cases real and perceived

Use case: homegrown PaaS Build your own Heroku Extant tools: Deis, Tsuru, etc....but is this really a good idea? Perhaps for internal use.

Baidu Heard of them? They did ~$4Bn in 2013... Announced on 12/10/13 they re building Baidu App Engine using Docker

Use case: easy provisioning of dependencies How do I install BlingoDB?...quickly starting up a database server, or any other dependencies required by the app

Use case: easy provisioning of ElasticSearch $ vagrant up && vagrant ssh > docker pull dockerfile/elasticsearch... > docker run -p 9201:9200 -p 9301:9300 dockerfile/elasticsearch

Use case: easy provisioning of dependencies Also easy to re-package site-specific customizations of dependencies

Use case: build a component for a scalable system How do I deploy my app into production the same way it runs on my machine?

Use case: build a component for a scalable system source code + docker file build system config (test) Build artifact (image) release Integration test system system config (release) release Release system

Use case: build a component for a scalable system Built around tcp://ipaddress:port interconnectivity Binary images: self contained with all dependencies, efficient with image layering Fast tear down and restart / redeploy and start Easy to maximise hardware utilization

So What?

Docker: What s in it for me? Devs: Docker gives you a really easy way to find and use pre-packaged system components to use in conjunction with your app code.

Docker: What s in it for me? Devs: Quick start-up Declarative Convenient Agnostic Easy to create Easy to consume

Docker: What s in it for me? DevOps: Docker gives the Devs a straightforward way to declaratively package deployable, repeatable, self-contained system components.

Docker: What s in it for me? DevOps: Declarative Dockerfile Self-contained dependencies - binary distribution of images Quick start-up Easy testing of topologies Easy enough for devs

Docker: What s in it for me? System Architect: Aligned with the Twelve-Factor App philosophy Easy to bootstrap a sophisticated infrastructure Easy to deploy Docker into an architecture Easy to remove Docker from an architecture

Why not? Please note Docker is currently under heavy development. It should not be used in production (yet). CLI is functional, but not brilliant Additional (unnecessary) layer of abstraction Additional security concerns, complexity, failure modes, learning

Demo time

Demo Scenarios Pulling in dependencies (ES) and using them for code Packaging an app up into a container Using packaged containers to test, e.g. ES clustering

Thank you Docker! docker.com Slides: bit.ly/ngb8h1 or brownsofa. org/presentations/files/docker_whats_in_it_for_ me.pdf @iantruslove ian.truslove@gmail.com