Dockerizing development workflow
-
Upload
orest-ivasiv -
Category
Internet
-
view
219 -
download
1
Transcript of Dockerizing development workflow
Dockerizing developmentworkflowITRally16 May 2015
Orest IvasivSoftware engineer, SoftserveDocker hobbyist
History
February 2013: private repo, with liveral access (~200 people had access and helped toreview, contribute, give feedback) March 2013: Docker 0.1 release at PyCon: - requires LXC, AUFS; - works on Debian/Ubuntu kernels June 2014: Docker 1.1, released at DockerCon May 12 2015: Docker 1.6.2, release 3 days ago
Docker Community
21500+ Github Stars
900+ Github Contributors
~50% of the commits are done by community
What is Docker?
Docker is an open source platform to automate development cycle of applicationsinside software containers.
Build → ship → run any app, anywhere
Build: package your application in a container
Ship: move that container from a mashine to another
Run: execite that container (i.e. your application)
Any application: anything that runs on Linux
Anywhere: local VM, cloud instance, bare metal, etc.
Docker vs VM
Containers vs VMs. Diagram source: Docker Inc.
There's a great StackOverflow answer showing the differences (http://stackoverflow.com/questions/16047306/how-
is-docker-io-different-from-a-normal-virtual-machine)
Docker vs VM
Startup time is less for Docker than VMs (super fast)
Docker images have much smaller size
Snapshot process is faster in Docker than VMs
Docker images have more portability
Docker provides versioning of images
Docker images do not have states
Don't need SSH for access
Docker vs native
Docker helps to avoid lib version conflicts
Docker has no or minimal overhead while using resource for visualization
Docker Linux technology stack
Docker can use different interfaces to access virtualization features of the Linux kernel. Diagram source: Docker Inc.
Docker Internals
Docker image (http://docs.docker.com/terms/image/)
Docker layer (http://docs.docker.com/terms/layer/)
Docker container (http://docs.docker.com/terms/container/)
Docker repository (http://docs.docker.com/terms/repository/)
Docker registry (http://docs.docker.com/terms/registry/)
Use cases
1. Docker for local application development and test
Works on my machine → Works again on my machine tomorrow → Works on a test machine
2. Docker for development team collaboration
Works on my machine → Works on your machine
3. Docker for continuous integration
- Complicated configuration of various types of build jobs (e.g., Maven, GCC and JUnit)- Need for a clean environment for the build or test, to eliminate possible contaminants- Managing the total execution time of the CI workflow
4. Docker for production application deployment
Works on my machine → Works on QA machines → Works (the same) on production hardware→ Stays working (securely) on the production environment
5. Docker for creating a private PAAS
References
Official Docker documentation (http://docs.docker.com/)
Docker Cheat Sheet (https://github.com/wsargent/docker-cheat-sheet)
Docker Use cases - Article (http://blogs.gartner.com/richard-watson/ok-get-dockers-great/)
Linux Containers (https://linuxcontainers.org/)
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition,Jérôme Petazzoni (http://www.slideshare.net/jpetazzo/introduction-to-docker-december-2014-tour-de-france-bordeaux-special-edition)
Official hosted registry https://hub.docker.com/ (https://hub.docker.com/)
Thank you
Orest IvasivSoftware engineer, SoftserveDocker [email protected] (mailto:[email protected])
http://halyph.com (http://halyph.com)
@halyph (http://twitter.com/halyph)