What is Docker?
It is the possible replacement for Virtualization.
What is the Difference between Virtualization and Docker?Below is a good picture from https://www.docker.com/whatisdocker.
So the difference between Virtualization and Docker is that everything runs locally on the same server, without the Virtualization overhead.
Example. Lets download a ready image from the Docker Hub (https://hub.docker.com/). You can either browse the Docker Hub via web browser or via command line.
Lets pick the official docker image. The first time you run a new Docker Image, it will download it and that will take a little while.
And now try it by open http://localhost:8888.
So what happened? We started a new process.
And a new tomcat process.
And for network. A new virtual bridge was created, which is basically a virtual router.
Why is Docker Better?
- Lower licensing costs. You only need ONE license for the virtualized server for ALL its virtual guests.
- More RAM and CPU. With Docker all process runs on the server directly. No virtualization layer that steals resources.
- Less disks. A virtual guest is at least 20 GB and a Docker image is around 300 MB, since no duplication of OS and all its libraries are needed.
How Does Docker Work?
Docker makes use of proven mature Linux technologies:
- CPU and RAM - cgroups. With cgroups you can restrict how much a process can use of the CPU and RAM, much like the same way CPU and RAM is handled in virtualization.
- Disks - namespaces. With namespaces you can isolate local file system and divide it much like a network filesystem.
- Network - virtual ethernet bridge.
Common Docker Commands
Installation on Ubuntu 14.04
Test the installation.
- Docker Documentations https://registry.hub.docker.com/
- Shared ready to use Docker Images https://hub.docker.com/
- Docker Network https://docs.docker.com/articles/networking/
- cgroups https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt
- namespaces http://man7.org/linux/man-pages/man7/namespaces.7.html
- Docker at github https://github.com/docker/docker