getting up and running with docker
TRANSCRIPT
getting it running and the initial “aha Erlebniss"
@ndemoor
Hi! I’m Nils De Moor CTO/cofounder at WooRank Docker Belgium MUG AWS Belgium MUG
That’s me!
A tale of many hats
version drift
Dev Test Prod
PHP 5.5 5.4 5.3
Node 0.12.8 0.10.32 0.10.28
MySQL 5.6 5.5 5.5
<insert new hipster language> 0.1.17-RC1 0.1 ?
Virtual Machines
Prod
Test
Dev 1
Simple Isolated Portable Automated Flexible Versioned
“Ship anything... anywhere”
Dev Test Prod
PHP 5.5 5.4 5.3
Node 0.12.8 0.10.32 0.10.28
MySQL 5.6 5.5 5.5
<insert new hipster language> 0.1.17-RC1 0.1 ?
Dev Test Prod
PHP
Node
MySQL
<insert new hipster language>
Docker Registry
Docker Image
$docker run ubuntu echo “Hello World”
# DockerfileFROM ubuntu:14.04
ENV DEBIAN_FRONTEND noninteractive
# bring apt up-to-date and install memcachedRUN apt-get update -y \&& apt-get install -y memcached
# run as user daemon (memcached doesn't allow to run as root)USER daemon
# expose port to other containersEXPOSE 11211
# Launch memcached when launching the containerENTRYPOINT ["memcached"]
$docker build -t ndemoor/memcache .
$docker run \ -d —-name mc \ ndemoor/memcache
$docker logs mc
$docker stop mc
$docker push ndemoor/memcache
# DockerfileFROM node:0.10.38
# Define app root dirWORKDIR /var/www
# Add package file to root dirADD ./package.json /var/wwwRUN npm install --production
# Add our application codeADD . /var/www
# Create mount point for application dataVOLUME /var/data
# Launch applicationCMD [“npm”, “start”]
$docker build -t ndemoor/my-node-app .
$docker run \ -d -p 3000:3000 —-name app \ -v /data/node-app:/var/data:rw \ ndemoor/my-node-app
$docker push ndemoor/my-node-app
containers: web: build: . command: npm start —-dev ports: - "3000:3000" volumes: - .:/var/www
- /data/node-app:/var/data links: - mc environment: - PORT=3000
- MY_ENV=dev mc: image: ndemoor/memcache
Docker Compose
$docker-compose up
$docker-compose run app migration.sh
$machine create -d virtualbox dev
$machine ls
$machine create -d digitalocean --digitalocean-access-token=... staging
$machine create -d aws ...
Docker Machine
$swarm create 6856663cdefdec325839a4b7e1de38e8
# start the swarm agent on each node $swarm join --discovery token://<cluster_id> --addr=<node_ip:2375>
# start the manager on any machine $swarm manage --discovery token://<cluster_id> -H tcp://<swarm_ip:swarm_port>
Docker Swarm
http://www.meetup.com/Docker-Belgium
Thank You!
@ndemoor
Photo Credit
http://static2.theguideistanbul.com/media/content_files/images/01/50/48/b_15048.jpeg http://2eof2j3oc7is20vt9q3g7tlo5xe.wpengine.netdna-cdn.com/wp-content/uploads/2014/05/virtual-machine-logo-370x261.jpg http://upload.wikimedia.org/wikipedia/commons/6/6f/Juggling_Clubs_Manuel_and_Christoph_Mitasch_11_club_passing.jpg http://www.docker.com