You are on page 1of 13

DevOps Challenges

My
laptop
Your
laptop
QA Staging Prod
Libs/code ? ? ? ? ?
SQL DB ? ? ? ? ?
MQ ? ? ? ? ?
Framework ? ? ? ? ?
Each environment looks different
Different developer needs
Different operations environment
Virtual Machines
Entire computer is executed as a program
No developers local system has to be modified
The entire VM disk image can be shared
No more differences between dev and production
environments
Containers
Containers vs VMs
Docker containers Virtual Machines
Avg Host Resources
Consumed
Low High
Clean Startup Time Seconds Minutes/Hours
Environment Sharing Small (UFS) Large (Entire FS)
Environment
Reproducibility
High Moderate
Software modification
needed?
Perhaps Unlikely
Attack Surface Untested Small
System Monitoring Use Linux Tools Custom systems
Docker
Docker shares the kernel with the host, uses Linux
namespaces + cgroups + Union FileSystem to
isolate:
Namespaces
Hostname (uts)
Inter-Process
Communication (ipc)
Network stack (net)
Mount points (mnt)

Processes (pid)
User accounts (user)
cgroups
Memory
CPU
Disk access I/O (blkio)
Device Access (devices)
*Kernel 3.8+ Later
UFS & COW
Docker Components
Docker uses
Make your local development and build workflow faster, more
efficient, and more lightweight
Run standalone services and applications consistently across
multiple environments
Create isolated instances to run tests for continuous integration
(Jenkins)
Building and testing complex application and architectures on a
local host prior to deployment
Platform as a service with docker containers


Docker related projects
PAAS:
Flynn
Deis
Dokku

Docker Orchestration:
CoreOS
Fig
Serf
Continuous Integration:
Drone

UI:
Shipyard
DockerUI

Other:
Openstack Docker
Libcontainer
libchan
Docker commands
docker info
docker search
docker pull/push <image_name>
docker run <image_name> command
docker logs <container_name>
docker stop/start/restart/rm <container_name>
docker commit <image_name>
docker history <image_name>
docker build <image_name>

Dockerfile
FROM <image name>
MAINTAINER <author name>
ENV <key> <value>
RUN <command>
ADD <file> <destination>
CMD <command> <param1> ,
ENTRYPOINT <command> <param1>,
VOLUME <path>
WORKDIR <path>
EXPOSE <port>
DEMO

You might also like