Docker by Demo
by Shyamkumar Chauhan
What is Docker?
History of LXC (Linux Containers)
cgroups
namespaces
Docker, a high level API
Why do we need Docker?
dependencies as versioned code
isolation of processes
speed
debugging
pluggability
devops – a process enforcer
devops – a tool between rpm,
deb and ansible, chef, puppet
devops – a process enforcer
What’s wrong with VMs?
speed
new vm = minutes,
new container = seconds
vms = separate kernel,
containers = shared kernel (can have
different base image)
duplicate services (cron, syslog)
need to be run for each role
Installing Docker
only 64-bit supported
kernel 3.8
sudo yum install docker-io
sudo service docker start
Downloading (aka pulling)
Images
$ sudo docker pull ubuntu
$ sudo docker images
Launching Containers
$ sudo docker run -i -t ubuntu /bin/bash
$ sudo apt-get install python3
$ sudo docker ps
$ sudo docker commit <container_id> image
Docker Repositories
local private images
The Docker Hub
Writing Your First Dockerfile
# Dockerfile
FROM ubuntu
MAINTAINER James Turnbull "james@example.com"
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Hi, I am in your container' 
>/usr/share/nginx/html/index.html
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-h"]
$ sudo docker build -t="user/nginx" .
$ sudo docker run -t -i user/nginx
$ sudo docker run -t -i user/nginx -g "daemon off;“
$ sudo docker port <container>
Issues/Limitations/Misconceptio
ns
lack of image inheritance–
composing multiple images (for
example, ruby and nginx)
yet another tool – dockerizing
your app takes time
not every app can be dockerized
you still need configuration
management tools like ansible or
puppet
orchestration isn’t avoided
either
Where do you go from here?
the docker book, james turnbull
try dockerizing one of your
applications

Docker by-demo