Definition of

Docker

Client-server

The Docker container architecture is client-server type.

Docker is a platform that makes it possible to build, test, and deploy applications . This tool allows you to generate containers : standardized units of packaged software that house what is needed for its execution, from code to libraries.

Thanks to Docker , apps can be deployed in all types of environments with the guarantee of the execution of their code. It should be noted that the platform is open source .

Docker history

The history of Docker began within the company dotCloud , dedicated to the development of PaaS (platform as a service) . It was Solomon Hykes who promoted the project with contributions from Francois-Xavier Bourlet , Andrea Luzzardi and other company engineers.

It can be said that Docker was the evolution of a dotCloud technology, built from Cloudlets and other open source initiatives.

The release of Docker with open source took place in 2013 . The following year, the platform started using its own library (called libcontainer ).

Over time, dotCloud, Inc. transformed into Docker, Inc , which today is the firm that promotes the project and offers the commercial version of the platform for sale.

Currently, in short, the idea of ​​Docker can refer to the computer system, the company or the open source community.

Docker Registry

Images are stored in a Docker Registry.

How containers work

Docker is based on container production . These are executable units that function as virtual environments, packaging the application code that is created together with its dependencies and libraries. This way, code execution can take place on a desktop, in the cloud , or elsewhere.

It is important to note that containers use a virtualization mode of the operating system that allows kernel properties to be used for process isolation and to determine how much memory and CPU the processes in question access.

Containers are generally compared to virtual machines ( VMs ). According to experts, containers provide the functionality of virtual machines (availability, scalability , application isolation) but with benefits such as more efficiency, better productivity and lighter weight.

Programming

Each image layer constitutes a different version.

Docker Features

In its operation, Docker appeals to the Linux kernel, using functions such as namespaces and control groups, to promote the division of processes and, in this way, achieve their independent execution.

In this context, Docker works with a deployment model that is based on images. Each Docker image hosts the application code, libraries, etc., making services and the application easily shareable across multiple environments.

Although images can be built from scratch, they are typically pulled from a common repository (such as Docker Hub ). Thus, different images can be obtained from a base image, which are structured in layers. These layers are the different versions of the image.

The client-server technology used for building and containerizing applications is known as Docker Engine . What it does is enable the development of all actions that are linked to the execution of the application that is based on the container. This engine has components like Docker Daemon (in charge of managing Docker images , containers and other elements), Docker CLI (command line interface for communication with Docker Daemon ) and REST API (for interaction with Docker Daemon ).

On the other hand, through Docker Compose you can achieve the execution of different containers as a single service. First you must create a Dockerfile to establish the environment, then you must define the various services and finally use the Docker Compose command to start the execution of the application.

Another fact to consider is that, by installing Docker Desktop , you can use Docker on Windows , Linux or Mac . This interface makes it possible to manage containers, Docker images , and applications on the computer.

Advantages and disadvantages

Using Docker offers many advantages. It not only allows you to work with different operating systems, but also with different programming languages.

Thanks to Docker , a programmer ensures that his code will work in different environments through containers (which, as we already indicated above, take up less space than virtual machines). Since each application is stored in a container isolated from the others, security management is simpler and chain virus infections are avoided.

Fast deployment, restore options with Docker image layers, modularity enabled by microservices , and simplified portability are also among the benefits of Docker .

Among the disadvantages, meanwhile, are the need to learn the command line since it does not run applications with GUI ( graphical user interface ); the lowest speed compared to a physical server; and the fact that container execution occurs on a host operating system (which carries certain security risks).