Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Docker Ecosystem - Orchestration

The Docker Ecosystem - Orchestration

**Docker orchestration talk**

Here you can find my docker slide container decks from my docker orchestration talks:

- [Continuous Lifecycle Mannheim 2015 - THE DOCKER ECOSYSTEM][14].
- open slidefire presentation container with `docker run -d -p 8000:80 rossbachp/docker-orchestration:cl-2015`
- pdf [Docker THE DOCKER ECOSYSTEM][15] is now avaiable!
- [WJAX Munich 2015 - CONTAINER ORCHESTRATION WITH THE DOCKER ECOSYSTEM][12].
- open slidefire presentation container with `docker run -d -p 8000:80 rossbachp/docker-orchestration:wjax-2015`
- pdf [Docker Orchestration][13] is now avaiable!
- [EnterJS Darmstadt 2015 - Docker ORCHESTRATION for JavaScript ][10].
- open slidefire presentation container with `docker run -d -p 8000:80 rossbachp/docker-orchestration:enterjs-2015`
- pdf [Docker Orchestration][11] is now avaiable!
- [DevOpsCon Berlin 2015 - CONTAINER ORCHESTRATION WITH THE DOCKER ECOSYSTEM ][8].
- open slidefire presentation container with `docker run -d -p 8000:80 rossbachp/docker-orchestration:devopscon-2015`
- pdf [Docker Orchestration][9] is now avaiable!
- [JAX Finance London - CONTAINER ORCHESTRATION WITH THE DOCKER ECOSYSTEM ][6].
- open slidefire presentation container with `docker run -d -p 8000:80 rossbachp/docker-orchestration:jaxfinance-2015`
- pdf [Docker Orchestration][7] is now avaiable!
- [Microservice Meetup Berlin - Docker Orchestration ][3].
- open slidefire presentation container with `docker run -d -p 8000:80 rossbachp/docker-orchestration:mberlin201502`
- pdf [Docker Orchestration][4] is now avaiable!
- [Docker Meetup Frankfurt - Docker Orchestration ][1].
- open slidefire presentation container with `docker run -d -p 8000:80 rossbachp/docker-orchestration:mfrankfurt-2015`
- pdf [Docker Orchestration][2] is now avaiable!

Open slidefire presentation container with your browser `http :8000/docker-orchestration`

Feedback welcome

[Peter Rossbach][5]

[1]: http://www.meetup.com/Docker-Frankfurt/events/219160756/
[2]: https://speakerdeck.com/rossbachp/docker-meetup-frankfurt-2015-docker-orchestration
[3]: http://www.meetup.com/Microservices-Meetup-Berlin/events/219979690/
[4]: https://speakerdeck.com/rossbachp/microservice-meetup-berlin-2015-docker-orchestration
[5]: http://twitter.com/PRossbach
[6]: http://jax-finance.com/2015/session/container-orchestration-docker-ecosystem/
[7]: https://speakerdeck.com/rossbachp/container-orchestration-with-the-docker-ecosystem
[8]: http://devopsconference.de/2015/de/sessions/docker-container-orchestrierung-leicht-gemacht
[9]: https://speakerdeck.com/rossbachp/docker-container-orchestration-devopscon-2015
[10]: http://www.enterjs.de/abstracts#docker
[11]: https://speakerdeck.com/rossbachp/docker-orchestration-for-javascript
[12]: https://jax.de/wjax2015/sessions/infrastruktur-fuer-mircoservices-docker-orchestration
[13]: https://speakerdeck.com/rossbachp/container-orchestration-with-the-docker-ecosystem-1
[14]: http://www.continuouslifecycle.de/veranstaltung-4866-das-docker-%C3%96kosystem.html?id=4866
[15]: https://speakerdeck.com/rossbachp/the-docker-ecosystem-orchestration

Peter Rossbach

November 10, 2015
Tweet

More Decks by Peter Rossbach

Other Decks in Programming

Transcript

  1. 3 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Make software faster available Produce higher quality Make your services globally available Improve your service with customer feedback Reduce your cost
  2. 4 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Work together (DevOps) Automate your Delivery Pipeline Use existing Orchestration Tools Use a DataCenter Operating System Migrate Services to the Cloud Integrate more monitoring into your apps
  3. 8 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Docker works locally and in the cloud with the same binary with the same functionality with the same version with the same filesystem layout with the same dependencies but with different Linux kernels! This dream is now reality... => Infrastructur First
  4. 11 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Use Linux at bare metal, instead a virtual machine provider
  5. 12 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 but there exists a lot of competitors CoreOS Rocket | pure LXC | Ubuntu joyent | SmartOS | ...
  6. 13 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Create a industry standards around container format and runtime Project Sponsors Apcera, AWS, Cisco, CoreOS, Docker, EMC, Fujitsu, Google, Goldman Sachs, HP, Huawei, IBM, Intel, Joyent, Pivotal, the Linux Foundation, Mesosphere, Microsoft, Rancher, Red Hat, VMWare Docker donating reference implementation runC first spec draft end of July 2015 https://www.opencontainers.org/
  7. 14 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Docker Engine 1.9 Docker Volumes- and Network-Manager Docker Toolbox 1.9 Docker Machine 0.5 Docker Swarm 1.0 Docker Compose 1.5.0 Mesos with Marathon Kubernetes
  8. 15 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Management Docker Host Native Windows Docker Client available Fast Image Loading ( Registry 2.2) Daemon add IPv6 support Resource Limit Management Access Container stats More Resource Control Volume- und MultiHost Network-Management
  9. 16 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ docker run -ti --rm debian:8 $ cat >Dockerfile <<EOF FROM ubuntu:14.04 RUN apt-get update && apt-get install -y apache2 \ && rm -rf /var/lib/apt/lists EXPOSE 80 CMD [ "apache2ctl", "-D", "FOREGROUND", "-k", "start" ] EOF $ docker build -t infrabricks/myapache:0.1 . $ docker run -d -p 80:80 infrabricks/myapache:0.1 $ docker login $ docker push infrabricks/myapache:0.1
  10. 18 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Store public and private Repositories Automatic Build Pipeline Web-Notification '>' 100 Trusted Repositories '>' 100.000 free Repositories https://hub.docker.com Free Registry project available On Premise Installation (Docker Trusted Registry, Artifactory) Other Registry Cloud Service (Goggle, Aws, Quay, Softlayer, ...)
  11. 21 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Provision and setup a Docker-Host Create and manage machines Use libmachine framework for easier driver integration Docker swarm support Regenerate Certs after IP-address is changed Use current Docker 1.9 engine release Docker engine upgrade support Add Generic driver Add Engine and Swarm options Add experimental Mesos Scheduler support Plugable Driver First presentation at second docker hackday end of Oct-2014 Product offering at DockerConf Amsterdam Dec-2014 Third release v0.5 Nov-2015 is avaliable https://github.com/docker/machine
  12. 22 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 https://github.com/docker/machine/releases $ URL=https://github.com/docker/machine/releases/download $ curl -L $URL/v0.5.0/docker-machine_darwin-amd64.zip >machine.zip $ unzip machine.zip $ rm machine.zip $ sudo mv -f docker-machine_* /usr/local/bin $ sudo chmod +x /usr/local/docker-machine_*
  13. 23 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ git clone https://github.com/docker/machine.git $ cd machine # setup a docker host (with older version or use old boot2docker) $ script/build -osarch="darwin/amd64" $ cp docker-machine_* ~/bin/ $ cd ~/bin $ chmod +x docker-machine_* Cross-Compile with golang, inside a build container!
  14. 24 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ cd ~/bin $ docker-machine ls INFO[0000] Creating CA: /Users/peter/.docker/machine/certs/ca.pem INFO[0001] Creating client certificate: /Users/peter/.docker/machine/certs/c NAME ACTIVE DRIVER STATE URL $ ls -a .docker/machine/certs ca-key.pem ca.pem cert.pem key.pem server-key.pem server.pem Build your own docker-machine CA!
  15. 25 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ time docker-machine create -d virtualbox dev1 INFO[0000] Downloading boot2docker.iso to /Users/peter/.docker/images/boot2d INFO[0019] Creating SSH key... INFO[0020] Creating VirtualBox VM... INFO[0027] Starting VirtualBox VM... INFO[0027] Waiting for VM to start... INFO[0061] "dev" has been created and is now the active machine INFO[0061] To point your Docker client at it, run this in your shell: eval real 1m1.937s user 0m6.904s sys 0m6.231s
  16. 26 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ time docker-machine create -d virtualbox dev2 INFO[0000] Creating SSH key... INFO[0000] Creating VirtualBox VM... INFO[0008] Starting VirtualBox VM... INFO[0008] Waiting for VM to start... INFO[0042] "dev2" has been created and is now the active machine. INFO[0042] To point your Docker client at it, run this in your shell: eval real 0m42.850s user 0m6.031s sys 0m5.960s Use Image-Cache
  17. 27 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ docker-machine env dev1 export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/peter/.docker/machine/machines/dev1" export DOCKER_MACHINE_NAME="dev1" $ docker $(docker-machine config dev1) ... $ eval $(docker-machine env dev2) $ docker ...
  18. 28 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ docker-machine ls NAME ACTIVE DRIVER STATE URL dev1 virtualbox Running tcp://192.168.99.100:2376 dev2 * virtualbox Running tcp://192.168.99.101:2376 $ docker-machine config dev2 --tlsverify --tlscacert="/Users/peter/.docker/machine/machines/dev2/ca.pem" --tlscert="/Users/peter/.d $ docker $(docker-machine config dev1) ps Start a Container $ docker $(docker-machine config dev2) run \ --rm busybox /bin/sh -c "echo hello machine \$(hostname)" Unable to find image 'busybox:latest' locally busybox:latest: The image you are pulling has been verified 511136ea3c5a: Pull complete df7546f9f060: Pull complete ea13149945cb: Pull complete 4986bf8c1536: Pull complete Status: Downloaded newer image for busybox:latest hello machine 117ade53e1d6 $ docker $(docker-machine config dev2) ps -a REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE busybox latest 4986bf8c1536 5 weeks ago 2.433 MB
  19. 30 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ DOCKER_VERSION=1.9.0-rc3 $ ISO_URL=https://github.com/tianon/boot2docker-legacy/releases/download $ docker-machine create -d virtualbox \ --virtualbox-boot2docker-url \ $ISO_URL/v$DOCKER_VERSION/boot2docker.iso \ dev3 $ docker-machine ssh dev3 ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| WARNING: this is a test.docker.com build, not a release. Boot2Docker version 1.9.0-rc3, build master : 9f3803e - Wed Oct 28 16:32:29 UTC 2015 Docker version 1.9.0-rc3, build 2100b94 Really easy peasy...
  20. 31 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Different access, credentials and config options Add Docker Daemon Options Add Swarm Options Add Discovery Options see docker-machine help create and docs docker-machine create --help --driver virtualbox
  21. 32 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Works now as proposed... Generating a machine in a minute... A lot of pull requests exists to support more providers CenturyLink, CloudStack Parallels, QCloud, Gandi, Linode...:-) Add your own Plugin's Swarm support Manage your machine infrastructure Simple CLI Missing a multi machine description file Missing provisioning feature
  22. 34 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 https://github.com/docker/swarm Scheduling docker containers at multiple machines Maintain docker machine cluster Support multiple discovery services Support filtering Open API and first batteries included Master/Slave Cluster Support First presentation at second docker hackday end of October 2014 Product offering at DockerConf Amsterdam 2014 Second Release Jun 2015 Current Release Nov 2015 : 1.0.0
  23. 37 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ docker pull swarm:1.0.0 $ docker run --rm swarm:1.0.0 create <SWARM_TOKEN> # Master $ docker run -d -p 3376:2376 swarm:1.0.0 manage \ <TLS CONFIG> token://<SWARM_TOKEN> # Agent $ docker run -d swarm:1.0.0 join \ --addr=<node_ip:2376> token://<cluster_id>
  24. 38 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 docker run docker build docker create docker inspect docker kill docker logs docker start docker info docker ps ... Newest Volume and Network Commands are supported! Docker API 1.21
  25. 39 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 docker hub swarm discovery simple file or cmd line nodes agent based consul etcd zookeeper http://discovery-stage.hub.docker.com https://github.com/docker/swarm/tree/master/discovery
  26. 40 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Spread Bin Packing Random Rescheduling container is planned! Multi Master Setup http://en.wikipedia.org/wiki/Bin_packing_problem
  27. 41 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Memory based docker run -m 1g ... CPU CORE based docker run -c 1 ... Port based docker run -p 80:80 ...
  28. 42 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ docker run -c 1 -p 9082:8080 -d tomcat:8.0 35d50a29ed0fde780c0826ef16ff24d2582609f877ee092c780d9aeb6f27fc75 $ docker ps CONTAINER ID IMAGE COMMAND CREATED \ STATUS PORTS NAMES 35d50a29ed0f tomcat:8.0 "catalina.sh run" 16 minutes ago\ Up Less than a second 192.168.33.89:9082->8080/tcp \ dockerhost1/insane_brattain 9c79ad1c4958 nginx:latest "nginx -g daemon of" 5 hours ago\ Up 5 hours 443/tcp, 192.168.33.90:8080->80/tcp \ dockerhost2/multiple-machine_nginx_1421067200 $ docker run -c 1 -p 9083:8080 -d tomcat:8.0 f5bc6a274e82426df98eaca5e88fb01f43e03455dfebdb9ee4a3b00a7eab202e $ docker ps CONTAINER ID IMAGE COMMAND CREATED\ STATUS PORTS NAMES f5bc6a274e82 tomcat:8.0 "catalina.sh run" 16 minutes ago\ Up Less than a second 192.168.33.90:9083->8080/tcp \ dockerhost2/stupefied_albattani 35d50a29ed0f tomcat:8.0 "catalina.sh run" 17 minutes ago\ Up Less than a second 192.168.33.89:9082->8080/tcp \ dockerhost1/insane_brattain 9c79ad1c4958 nginx:latest "nginx -g daemon of" 5 hours ago\ Up 5 hours 443/tcp, 192.168.33.90:8080->80/tcp \ dockerhost2/multiple-machine_nginx_1421067200 ...
  29. 43 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ lsb_release -a $ DOCKER_OPTS="--label region=de-berlin" $ DOCKER_OPTS="$DOCKER_OPTS --label disk=ssd" $ DOCKER_OPTS="$DOCKER_OPTS --label role=loadbalancer" $ docker -d ${DOCKER_OPTS} --label stage=prod Usage of the label with constraints docker run -e "constraint:operatingsystem==fedora" ... docker run -e "constraint:storagedriver==aufs" ... docker run -e "constraint:region==de-berlin" ... docker run -e "constraint:node!=dev2" ... Expression (Go Regexp) constraint:node==/swarm-node-00[12]/ constraint:node!=app* constraint:node==/(?i)node1/
  30. 44 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Provision to loaded image or named container docker run -d -p 80:80 --name front nginx docker run -e "affinity:container==front" logger docker run -e "affinity:image==redis" redis Container Label docker run -d -p 80:80 --label com.example.type=frontend nginx docker run -d -e affinity:com.example.type==frontend logger Soft docker run -d --name redis1 -e affinity:image==~redis redis docker run -d --name redis2 -e constraint:region==~us* redis docker run -d --name redis5 -e affinity:container!=~redis* redis
  31. 45 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Shared volumes: --volumes-from=dependency Links: --link=dependency:alias Shared network stack: --net=container:dependency
  32. 46 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 DOT=XYZ docker pull swarm:1.0.0-rc2 SWARM_TOKEN=$(docker run --rm swarm:1.0.0-rc2 create) echo $SWARM_TOKEN >token.txt docker-machine create \ --driver digitalocean \ --digitalocean-region fra1 \ --digitalocean-size 1gb \ --digitalocean-access-token $DOT \ --digitalocean-private-networking \ --engine-install-url "https://test.docker.com" \ --swarm \ --swarm-image swarm:1.0.0-rc2 \ --swarm-master \ --swarm-discovery token://$SWARM_TOKEN \ --engine-label zone=prod \ --engine-label swarm=master \ swarm-master
  33. 47 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 docker-machine create \ --driver digitalocean \ --digitalocean-region fra1 \ --digitalocean-size 1gb \ --digitalocean-access-token $DOT \ --digitalocean-private-networking \ --engine-install-url "https://test.docker.com" \ --swarm \ --swarm-image swarm:1.0.0-rc2 \ --swarm-discovery token://$SWARM_TOKEN \ --engine-label zone=prod \ --engine-label swarm=node \ swarm-node-001
  34. 48 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Container Scheduler Docker Proxy Supports TLS Up and Running Nice docker-machine swarm support exists Like It!
  35. 50 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Integration with Swarm - multi host support Applications spanning multiple teams/hubs An even better tool for development environments Extend configs
  36. 51 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 command description build Build or rebuild services help Get help on a command kill Kill containers logs View output from containers port Print the public port for a port binding ps List containers pull Pulls service images rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services restart Restart services up Create and start containers pause Pause services unpause Unpause services migrate-to-labels Recreate containers to add labels version Show the Docker-Compose version information
  37. 52 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 common.yml tomcat: image: infrabricks/tomcat:8 ports: - "8080" environment: - constraint:zone==dev - constraint:swarm==node SERVICE_8080_NAME: status-http SERVICE_REGION: bee42.1 SERVICE_8080_CHECK_HTTP: /status/ping.jsp SERVICE_8080_CHECK_INTERVAL: 30s
  38. 53 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 status: image: infrabricks/status:green tomcatgreen: extends: file: common.yml service: tomcat volumes_from: - status environment: SERVICE_TAGS: tomcat,green
  39. 54 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 status: image: infrabricks/status:blue tomcatblue: extends: file: common.yml service: tomcat volumes_from: - status environment: SERVICE_TAGS: tomcat,blue
  40. 55 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 shipyardrethinkdbdata: image: shipyard/rethinkdb entrypoint: /bin/bash command: -l rethinkdb: image: shipyard/rethinkdb expose: - "8080" - "28015" - "29015" volumes_from: - shipyardrethinkdbdata shipyard: image: shipyard/shipyard ports: - "5080:8080" links: - rethinkdb:rethinkdb
  41. 57 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 $ eval $(docker-machine env dev2) $ docker-compose up -d $ open http://$(docker-machine ip dev2):5080 $ docker run --rm -it shipyard/shipyard-cli Default Credentials: admin/shipyard More about the project http://shipyard-project.com/
  42. 59 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 crane maestro-ng rancher-os CoreOS fleet Kubernetes Marathon vagrant shipyard dockerui decking saltstack ansible puppet chef
  43. 60 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Volume, Network, Service Discovery, Scheduler (swarm)
  44. 63 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Start Service Discovery infrastructure (consul, etcd, zookeeper) docker-machine create \ -d virtualbox \ --engine-label "cluster=moby" \ moby-consul docker $(docker-machine config moby-consul) run -d \ -e "GOMAXPROCS=2" \ -p "8500:8500" \ -h "consul" \ progrium/consul -server \ -advertise $(docker-machine ip moby-consul) \ -ui-dir=/ui -data-dir=/data -bootstrap
  45. 64 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 docker-machine create \ -d virtualbox \ --engine-opt="cluster-store=consul://$(docker-machine ip moby-consul):8500" \ --engine-opt="cluster-advertise=eth1:0" \ --engine-label="cluster=moby" \ --swarm \ --swarm-master \ --swarm-discovery consul://$(docker-machine ip moby-consul):8500/moby \ moby-net-001 docker-machine create \ -d virtualbox \ --engine-opt="cluster-store=consul://$(docker-machine ip moby-consul):8500" \ --engine-opt="cluster-advertise=eth1:0" \ --engine-label="cluster=moby" \ --swarm \ --swarm-discovery consul://$(docker-machine ip moby-consul):8500/moby \ moby-net-002
  46. 65 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Host 1 $ docker network create -d overlay prod $ docker network ls $ docker network inspect prod $ docker run -d -ti --name demo1 --net prod alpine /bin/sh Host 2 $ docker network ls $ docker network inspect prod $ docker run -d -ti --name demo2 --net prod alpine /bin/sh $ docker attach demo2 > ping demo1 > ip addr show $ docker network inspect prod ...
  47. 66 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 docker bridge and overlay (libnetwork) openVSwitch weave flannel calico de-wire pipework https://speakerdeck.com/aschmidt75/docker-networking https://github.com/aschmidt75/docker-network-playground http://blog.weave.works/2015/06/22/weave-as-a-docker- network-plugin/ http://www.infrabricks.de
  48. 69 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Distributed key value store Service Registry Multi-Datacenter Support ACL HTTP and DNS Discovery support Simple: curl'able user facing API (HTTP+JSON) Secure: optional SSL client cert authentication Reliable: properly distributed using Raft Written in go Use the Find more info at website RAFT Protocol Consul
  49. 70 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Registrator automatically registers/deregisters services for Docker containers published ports published metadata from the container environment Consul (Tags, Healthcheck) Blog explain registrator Github registrator Consul ETCD
  50. 73 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Twitter AirBnB Apple (Siri) Google Cloud Plattform Amazon AWS Digital Ocean
  51. 74 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Tasks-Scheduler Docker Support Deployment Groups Auto Rescheduler Schedule Groups of Apps
  52. 75 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Kubernetes work on Mesos! RedHat OpenShift V3 use Kubernetes http://kubernetes.io
  53. 79 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Docker Set Mesos Kubernetes ECS Machine Support: + -- -- ++ Scheduling: + ++ ++ ++ Re-Scheduling: -- ++ ++ ++ Task Description: -- ++ + + Docker API Support: ++ ++ + + Registry + + + ++ Loadbalancing - + + ++
  54. 89 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 View the slides as a docker container $ docker run -d -p 8000:80 rossbachp/docker-orchestration:cl-2015 $ open http://<docker host>:8000/docker-orchestration Slides available at container and PDF :-) [email protected] @PRossbach Infrabricks Blog bee42
  55. 90 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Service benefit Lab: use my IT-brick knowledge to be faster informed Consulting: use my expertise to start smarter Training: let me help you to get a docker-brick expert Products: use my knowledge of the docker ecosystem [email protected]
  56. 91 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 Continuous Lifecycle at 9-12.11 2015 - Mannheim Docker Workshop 12.11 DevOpsCon 25-27.11 2015 - Munich Microservice Summit 9-12.12 2015 - Berlin Find my training offerings at http://www.bee42.com/training/ http://devops-training.de/2015
  57. 96 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 bee42 solutions gmbh starts the implementation of an Infrabricks line! Peter Rossbach DevOps, Docker-enthusiast and infra-coder with passion System architect Java Developer Apache Tomcat Committer Member of the Apache Software Foundation Founder of the bee42 solutions gmbh We're hiring!
  58. 97 / 97 © 2015 <[email protected]>, @PRossbach, Continuous Lifecycle Mannheim

    2015 https://blog.docker.com/2014/12/dockercon-eu-keynote-on-orchestration/ http://de.slideshare.net/d0cent/orchestrating-docker-containersatscale https://kubernetes.io https://github.com/docker/machine https://github.com/docker/swarm https://github.com/docker/docker/issues/9459 http://de.slideshare.net/Docker/docker-swarm-by-victor-vieux http://blog.docker.com/2014/12/announcing-docker-machine-swarm-and- compose-for-orchestrating-distributed-apps/ https://community.runabove.com/kb/en/instances/docker-in-5-minutes-on- runabove-with-docker-machine.html https://github.com/docker/machine/pull/73 http://blogs.vmware.com/cloudnative/docker-machine-deployment-vm-fusion- vsphere-vcloud-air/ https://github.com/cloudnativeapps/machine/releases/tag/vmw_tech_preview http://technolo-g.com/intro-to-docker-swarm-pt1-overview/ https://github.com/technolo-g/docker-swarm-demo http://technolo-g.com/intro-to-docker-swarm-pt2-config-options-requirements/