Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Why?

Slide 3

Slide 3 text

That eternal crap…! (i.e Having no idea what’s wrong)

Slide 4

Slide 4 text

Passing on the headache! Not the solution

Slide 5

Slide 5 text

Some use cases • Solving dependency hell • Configure once, run anywhere • Continuous integration • Create sandboxed app • Run your own PaaS

Slide 6

Slide 6 text

So, what’s Docker anyway?

Slide 7

Slide 7 text

Isolation Portability Provisioning Hypervisors/VM Chef, Puppet, Ansible Your app, libraries Docker

Slide 8

Slide 8 text

Docker vs. VM Hardware Linux/Kernel Container Container Container Container Container Container Hardware Linux/Kernel VM Linux/Kernel VM Linux/Kernel VM Linux/Kernel VM Linux/Kernel Shared Resource, Lightweight, Portable, Fast to boot Dedicated Resource, Heavy, Not portable, Comparatively slower boot

Slide 9

Slide 9 text

Under the Hood LXC Dream inside dream inside dream…. (The Inception in Linux) Namespaces & cgroups Isolated pid, net, uid…. Copy-on- write Filesystem AUFS, btrfs, ZFS….

Slide 10

Slide 10 text

Installation Do It Yourself

Slide 11

Slide 11 text

Docker Vocabulary • Repository • Image • Tag $ docker images ubuntu REPOSITORY TAG IMAGE ID ubuntu 10.04 9cc9ea5ea540 ubuntu 12.04 9cd978db300e ubuntu 12.10 5ac751e8d623 ubuntu 13.04 eb601b8965b8 ubuntu 13.10 9f676bd305a4 ubuntu latest 9cd978db300e ubuntu lucid 9cc9ea5ea540 ubuntu precise 9cd978db300e ubuntu quantal 5ac751e8d623 ubuntu raring eb601b8965b8 ubuntu saucy 9f676bd305a4

Slide 12

Slide 12 text

Docker Vocabulary • Registry $ docker pull ubuntu:12.04 Pulling repository ubuntu c0fe63f9a4c1: Pulling dependent layers 511136ea3c5a: Download complete 6170bb7b0ad1: Download complete 79fdb1362c84: Downloading [===> ]56 MB/66.64 MB 10m9s

Slide 13

Slide 13 text

Docker Vocabulary • Index $ docker login Username: mehdi Password: Email: [email protected] Login Succeeded

Slide 14

Slide 14 text

Docker Vocabulary • Container $ docker run ubuntu:12.04 echo Hello World Hello World $ docker run -i -t ubuntu:12.04 /bin/bash root@a09d485c9a9f:/# uname -a Linux a09d485c9a9f 3.13.3-tinycore64 #1 SMP Wed Mar 26 03:16:13 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux ! root@a09d485c9a9f:/# $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS ! f0638f0a1c7a ubuntu:12.04 /bin/bash 46 minutes ago Up 4 seconds Tip: Press Ctrl+P and Ctrl+Q to detach running containers

Slide 15

Slide 15 text

Docker Vocabulary • Dockerfile $ cat Dockerfile FROM ubuntu:12.04! ! MAINTAINER Mehdi Hasan "[email protected]"! ! RUN apt-get -y install python-software-properties! RUN add-apt-repository ppa:chris-lea/node.js! RUN apt-get update! RUN apt-get -y install python g++ make nodejs! $ docker build -t mehdi/nodejs . There is a trailing dot $ docker push mehdi/nodejs Image c0fe63f9a4c1 already pushed, skipping Image 5ff6986cd174 already pushed, skipping Image 3867fae91348 already pushed, skipping Image 4574f80c91e4 already pushed, skipping Image 37c2cc34fa4e already pushed, skipping 757db77867dd: Image successfully pushed Pushing tag for rev [757db77867dd] on {https:// registry-1.docker.io/v1/repositories/mehdi/nodejs/tags/ latest} Any idea why these images are skipped?

Slide 16

Slide 16 text

Container vs. Image! Still Puzzled? Running container from an image: Creating image from a container: $ docker ps -a! $ docker commit -m “Image description" / $ docker run -i -t ubuntu:12.04 /bin/bash Lets see a Demo

Slide 17

Slide 17 text

Docker Workflow Dev Prod Registry Public/Private

Slide 18

Slide 18 text

Demo Deploying a sample app on the cloud using Docker

Slide 19

Slide 19 text

Your Next Weekend Fun Project: Deploy something with Dokku Dokku Docker powered mini-Heroku in around 100 lines of Bash See the demo here: http://vimeo.com/68631325 https://github.com/progrium/dokku

Slide 20

Slide 20 text

The rabbit hole goes deeper than that… • How to deal with data, logs, file uploads? Where to store? Inside container? Inside host? Inside another container?
 
 Hint: Read http://docs.docker.io/en/latest/use/ working_with_volumes/ • How to deal with distributed systems? 
 
 Hint: Follow http://www.centurylinklabs.com/category/ docker-posts/

Slide 21

Slide 21 text

Keep following… • https://coreos.com/ • http://www.confd.io/ • http://www.serfdom.io/ • http://www.dockerbook.com/ (Not yet released)* * As of May, 2014

Slide 22

Slide 22 text

Docker cheat sheet • https://gist.github.com/wsargent/7049221 • https://coderwall.com/p/2es5jw

Slide 23

Slide 23 text

Questions?