Introduction to Docker
Docker is an open-source Linux container technology
Speaking Containers...
Brief History of Docker
1979 - Unix chroot
2000 - FreeBSD jails
2004 - Solaris Containers
2005 - Open Virtuozzo (required patched kernel)
2006 - Google Process Containers (
2008 - LXC (cgroups+namespaces; no kernel patching)
2013 - LMCTFY (Google's Let Me Contain That for You - contributed to
2013 - Docker (initially dotCloud project)
Containers vs Physical vs Virtual
Docker Ingredients
- cgroups ('control groups') - limit/ accounts for/ isolate CPU, Mem, I/O usage for a collection of processes
- namespaces - isolates and virtualise system resources. Docker supports PIDs, mount points, shared memory, network, hostnames namespaces. UID namespaces can be turned on.
- A union filesystem (i.e. aufs, unionfs)
Docker Ingredients
... plus
- simple to use CLI tool
- API
- Portability - via Dockerfile or an image
- Share images via Docker Registries (public and private)
- Ability to link running docker instances (via CLI or docker-compose)
- Works on Linux, Mac, Windows
- Clustering (Swarm, Kubernetes, Marathon, Nomad)
Benefits of Docker
- Development-Test-QA-Production parity. "Build once - run anywhere".
- Predictable and repeatable deployment process of an application and its dependencies.
- Ability to easy upgrade/rollbacks and implement 'blue/green' types of deployments
- Promote/encourages/enforces good practice. I.e. with docker it is easy to standartise service discovery, logging, monitoring/alerting, security aspects.
- Cost effectiveness - allows for a denser deployment than the conventional VMs
- Dev productivity (i.e. tools packaged as docker images)
Introduction to Docker
By Victor Orlov
Introduction to Docker
- 417