Dockerizing development workflow

22
Dockerizing development workflow ITRally 16 May 2015 Orest Ivasiv Software engineer, Softserve Docker hobbyist

Transcript of Dockerizing development workflow

Dockerizing developmentworkflowITRally16 May 2015

Orest IvasivSoftware engineer, SoftserveDocker hobbyist

Outline

1. What is Docker? 2. Internals of Docker 3. Docker basic commands 4. Sample usage

History

source Wikipedia

Docker was released as open source in March 2013

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 Host OS requirement

Linux kernel 3.8+

Union file system - AUFS, btrfs, vfs or DeviceMapper

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 architecture

Docker Client

Docker Daemon

Docker Registry

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/)

Docker Layers

Docker Layers

Docker Layers

Docker Layers

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

Docker vs Boot2Docker

Demo time

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)