The Technology used in Docker
The Technology used in Docker
Docker, is a very popular and influential technology for most developers.
Considered an operating system-level virtualization technology when compared to other hardware virtualization methods.
According to my question, the technique to do this is not new, it is based on the chroot technique that has been used for a long time in linux.
That said, but learning to use it takes a bit of practice, this article will summarize the Overview page from Docker’s page.
0. What is Docker used for?
1. Optimizing the development cycle:
Development (Dev) -> Testing (Test) -> Deployment (Deploy) -> Bug fixing -> Testing
When using containers (explained below) also provided by docker, continuous development is made smoother.
2. Satisfactory deployment and scaling (scaling)
Docker containers make it easy and lightweight to run on any computing environment.
3. Runs in many different environments
Because of its fast and lightweight reason, it is possible to create more virtualized environments than other virtualization technologies on the same compute hardware.
1. Docker Engine
Operating under the client-server model
Server is the application that will run smoothly (hidden).
Client is the application that the user will use to communicate with the Server using REST APIs
2. Architecture of Docker
Here is its architecture:
Please explain the words that appear in the picture above:
DOCKER_HOST : Host or Server part
Client : Client part
Registry : Like a repository
Docker daemon : A program that runs in the background that manages Containers and Images
Registry : Where to store Docker images. Docker hub is an example and is the only repository that is installed by default on Docker when it is first installed. We can completely create our own repository.
Images : Is a list of instructions written according to Docker rules to create a Docker container. Usually, one image will be based on another and then edited. For example, based on the ubuntu image, you add components such as Web server, application to create another image.
Container : A runnable instance of the image. It is created, turned on, off, moved, deleted by the Docker APIs affected by the Client. Basically, containers are independent of each other in terms of network connectivity. Once it is deleted, any changes will no longer be saved on the storage device.
3. Technology used in Docker
Namespace : Namespace specified. To provision resources per container. Docker uses the following names in Linux
pid : for process management
net : for network communication management
ipc : for accessing resources for interprocess communication
mnt : for managing filesystem mount points
uts : kernel manager, version
Control groups : Also known as cgroups, is a technology in Linux that allows limiting the resources (because in Linux everything is a file, so we can understand resources are also files) that an application can access.
Union file systems : Literally, the union file system. Used by Docker to provide classes when creating containers. There are different variants including: AUFS, btrfs, vfs, and DeviceMapper.
Container format: Docker Engine combines all of the above including: namespaces, control groups, UnionFS into one format. Currently the format in use is libcontainer. In the future, maybe more formats will be supported such as: BSD Jails, Solaris Zones.