docker workshop devopsdays amsterdam 2014
DESCRIPTION
Title: Introduction to Docker Abstract: During the year since it’s inception, Docker have changed our perception of the OS-level Virtualization also called Containers. At this workshop we will introduce the concept of Linux containers in general and Docker specifically. We will guide the participants through a practical exercise that will include use of various Docker commands and a setting up a functional Wordpress/MySQL system running in two containers and communication with each other using Serf Topics: Docker Installation (in case is missing) Boot2Docker Docker commands - basic commands - different types of containers - Dockerfiles Serf Wordpress Exercise - setting up Serf cluster - deploying MySQL - deploying Wordpress and connecting to MySQL Prerequisites: Working installation of Docker On Mac - https://docs.docker.com/installation/mac/ On Windows - https://docs.docker.com/installation/windows/ Other Platforms - https://docs.docker.com/installation/#installationTRANSCRIPT
![Page 1: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/1.jpg)
Introduction to Docker Workshop
Pini Reznikcontinuousdelivery.uglyduckling.nl
![Page 2: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/2.jpg)
Agenda
• Install Docker• Introduction to Containers and Docker• Workshop• Future of Infrastructure• Antitude
![Page 3: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/3.jpg)
DOCKER INSTALLATION
![Page 4: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/4.jpg)
Docker Installation
Mac https://docs.docker.com/installation/mac/
Windows https://docs.docker.com/installation/windows/
Other https://docs.docker.com/installation/#installation
![Page 5: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/5.jpg)
INTRODUCTION TO DOCKER
![Page 6: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/6.jpg)
Evolution of IT
Image courtesy of Docker Inc./ docker.io
![Page 7: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/7.jpg)
Challenge of Multiple Environments
Image courtesy of Docker Inc./ docker.io
![Page 8: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/8.jpg)
Cargo Analogy
Image courtesy of Docker Inc./ docker.io
![Page 9: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/9.jpg)
Cargo Delivery Pipeline
Image courtesy of Docker Inc./ docker.io
![Page 10: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/10.jpg)
Shipping Goods
![Page 11: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/11.jpg)
Shipping with Containers
Image courtesy of Docker Inc./ docker.io
![Page 12: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/12.jpg)
Software in Containers
Image courtesy of Docker Inc./ docker.io
![Page 13: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/13.jpg)
Delivery Pipeline with Containers
Development
Environment Setup
Test
CleanEnvironments
Acceptance
Similarity toProduction
Production
Deployments andRoll-back/forwards
![Page 14: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/14.jpg)
Scalability with Containers
![Page 15: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/15.jpg)
Docker Functions
Image courtesy of Docker Inc./ docker.io
![Page 16: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/16.jpg)
Docker and VMs
Image courtesy of Docker Inc./ docker.io
![Page 17: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/17.jpg)
Supported Platforms
Image courtesy of Docker Inc./ docker.io
• Host– Any Linux with kernel >3.8.x
• Container– Same architecture as the host
![Page 18: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/18.jpg)
Docker Integrations and Hosting
NL
![Page 19: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/19.jpg)
OS Level Virtualization
ZONESJAILS
Workload Partitions
![Page 20: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/20.jpg)
Docker and Puppet/Chef/Ansible
Image courtesy of Puppet Labs puppetlabs.com
![Page 21: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/21.jpg)
Communication - Serf
Image courtesy of CoreOS coreos.com
![Page 22: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/22.jpg)
Infrastructure - CoreOS
Image courtesy of CoreOS coreos.com
![Page 23: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/23.jpg)
Cluster Management - Mesos
Image courtesy of typesafe.com
![Page 24: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/24.jpg)
PaaS, Heroku style - Flynn
Image courtesy of mesosphere.io
![Page 25: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/25.jpg)
Software Configuration Management Done Right.
Everything (almost) we need to build our Software is now finally in the Version Control
![Page 26: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/26.jpg)
WORKSHOP
![Page 27: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/27.jpg)
boot2docker
$ boot2docker init$ boot2docker start$ boot2docker ssh OR $ boot2docker init $ boot2docker start $ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375
![Page 28: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/28.jpg)
Docker run
$ docker run ubuntu ls$ docker run -i -t –name file -v `pwd`:/tmp/on_host -w `pwd`
ubuntu bash touch /tmp/file_a.txt touch /tmp/on_host/file_b.txt exit$ docker diff file
![Page 29: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/29.jpg)
Docker attach/stop/start
$ docker run -d -name while ubuntu /bin/sh -c "while true; do
echo hi; sleep 1; done"$ docker attach while
$ docker stop while$ docker start while
![Page 30: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/30.jpg)
Docker log/inspect/ps/top
$ docker ps$ docker ps –a
$ docker top while
$ docker logs
$ docker inspect
![Page 31: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/31.jpg)
Docker kill/rm/rmi
$ docker kill
$ docker rm
$ docker rmi
![Page 32: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/32.jpg)
Dockerfile
FROM ubuntuMAINTAINER UglyDuckling "[email protected]"
RUN echo deb http://archive.ubuntu.com/ubuntu precise universe
>> /etc/apt/sources.listRUN apt-get updateRUN apt-get install -q -y vimENV ENV_VAR some_stuffADD file.txt /file.txt
EXPOSE 8080CMD ["bash", "-c", "ls", "/"]
![Page 33: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/33.jpg)
Docker build/tag
$ docker build -t you_name/sample .
$ docker run you_name/sample
$ docker run -i -t you_name/sample bashls /file.txtexit
![Page 34: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/34.jpg)
Docker commit/pull/push (skipping)
• https://registry.hub.docker.com/
![Page 35: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/35.jpg)
Serf
• Gossip-based membership• Failure detection• Custom events
![Page 36: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/36.jpg)
Wordpress/MySQL Exercise
HOST
DOCKERContainers
ConnectedSerf agents
Based on www.centurylinklabs.com/decentralizing-docker-how-to-use-serf-with-docker/
![Page 37: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/37.jpg)
Checkout and build all containers
$ git clone https://github.com/pinireznik/DockerWorkshop.git
$ cat ./build.sh$ ./build.sh
![Page 38: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/38.jpg)
Start Serf container
$ SERF_ID=$(docker run -d --name serf_1 -p 7946 -p 7373
ud/serf /run.sh)
![Page 39: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/39.jpg)
Install and start Serf on Host
# Install Serf$ wget dl.bintray.com/mitchellh/serf/0.5.0_linux_amd64.zip$ unzip 0.5.0_linux_amd64.zip $ sudo mv serf /usr/bin/
# Start local agent and connect to the first Serf agent$ serf agent &$ serf join $(docker port $SERF_ID 7946)
![Page 40: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/40.jpg)
Start MySQL container
$ MYSQL_ID=$(docker run -d --name mysql --link serf_1:serf_1 -p 3306 ud/mysql-
serf /run.sh)
$ docker logs $MYSQL_ID# locate the password in docker logs and set env. variable.$ DB_PASSWORD=v6Dax72kQzQR
![Page 41: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/41.jpg)
Create database
# create temporary container with MySQL client to create DB$ docker run -t -i --name mysql_client --link mysql:mysql -p 3306
ud/mysql-serf bash
# create DB from inside containermysql -uadmin -p$DB_PASSWORD -h
$MYSQL_PORT_3306_TCP_ADDR -P 3306 -e "create database wordpress;"
![Page 42: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/42.jpg)
Start Wordpress
$ WORDPRESS_ID=$(docker run -d --name wordpress --link
serf_1:serf_1 -e="DB_PASSWORD=$DB_PASSWORD" -p 80 ud/wordpress-serf /run.sh)
![Page 43: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/43.jpg)
Test
# connect to the Workdpress site$ curl --location http://$(docker port $WORDPRESS_ID 80)/$ curl --location http://$(docker port $WORDPRESS_ID 80)/
readme.html
# kill DB and see what happens$ docker kill mysql $ curl --location http://$(docker port $WORDPRESS_ID 80)/
![Page 44: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/44.jpg)
Demo
• Android Development Env. in Docker container• Jenkins in a container• Parallel testing using multiple containers• Django in a container• Java development in a container
![Page 45: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/45.jpg)
FUTURE OF INFRASTRUCTURE
![Page 46: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/46.jpg)
Evolution of IT the Next Step
![Page 47: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/47.jpg)
App/Infra Performance Parity
![Page 48: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/48.jpg)
Microservices
Image courtesy of martinfowler.com
![Page 49: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/49.jpg)
Conway’s Law
organizations which design systems ... are constrained to produce designs which are copies
of the communication structures of these organizations
![Page 50: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/50.jpg)
Network-centric organization
Image courtesy of n-e-r-v-o-u-s.com
![Page 51: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/51.jpg)
ANTITUDE
![Page 53: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/53.jpg)
Antitude
• Self Healing• Automatic Scaling• Efficient Hardware Utilisation
![Page 54: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/54.jpg)
DockerCon Amsterdam in November
Docker Meetups
![Page 55: Docker workshop DevOpsDays Amsterdam 2014](https://reader037.vdocuments.net/reader037/viewer/2022103015/54c644d34a7959f2328b45bb/html5/thumbnails/55.jpg)
DockerCon Amsterdam Conference in November
Docker Meetup every month