Docker is an automation tool for deploying and managing applications in a virtualization environment at the operating system level. Docker allows you to deploy applications in portable containers and manage such containers. Distributed by Docker as free software.
We talked with
Nikita Tsukanov aka
kekekeks about the advantages of Docker and how to use it to deploy and manage server applications.

')
- What is the relevance of container application virtualization, how does it simplify application deployment and management?
Corporate IT teams very often have difficulty deploying applications. It is quite “normal”, unfortunately, the situation when there is no dialogue between application developers and IT administrators, when only one person in the company knows which buttons to click on so that the application will unfold, and the administrator cannot do anything himself - because there is one - The only person who has sacred knowledge about how to deploy a project. It happens that you need to run, for example, four different versions (sometimes almost the same, but still different) on different configurations, on different machines, and then all this is supported.
I have quite a lot of experience with similar projects, and I highlight the following main problems with application deployment. First: a very long deployment instruction, a very complex deployment process, no one understands what order to deploy. Second: one application must be replicated to work with different clients. Third: several server applications should work on the same server, and their environment is incompatible with each other, for example, you decide to use Linq2Excel in yourself, but it requires the installation of the Access Database Engine, 32 and 64-bit versions of which cannot be installed at the same time.
- How do Docker technology helps to solve these problems?Docker uses container virtualization (Figure 1), i.e. applications are completely separated from each other, they are isolated at the file system level and at the process level. Containers are essentially lightweight virtual machines, each of which runs a separate product. Docker provides a rich toolkit for creating and managing images of such containers. In fact, Docker allows you to take any server application with all its dependencies, with its basic file system, and make its image, which you can then replicate and run. When applications are running, they are isolated from each other, and the entire necessary file system for each application is different.
Picture 1Initially, Docker was a set of utilities and services that ran on top of Linux’s built-in toolkit, setting up process isolation and providing file system image management. Then, a fairly large infrastructure grew around Docker (Figure 2). For example,
Docker Hub is a place where you can centrally store containers, a separate depository for your own containers, since they are the intellectual property of the company. The
Docker Swarm tool allows you to manage your Docker containers. And the latest news about Docker is that it will now be
available for creating containers based on Windows Server .
Figure 2One common example of using Docker is to solve the problems of deployment documentation. The fact is that the Docker container is not created manually, but through a special script. Therefore, for each Docker container there is a script that you can run to create the same container again; In this script, the entire deployment process is clearly visible, and to update the application, it is enough to update its distribution used by this script.
- How popular is Docker technology?As I said, there is a
Docker Hub resource on which users place ready-made images of containers for different applications. At the moment, this resource has more than 400 thousand users, more than 2 billion downloads from Docker Hub have been registered, thus the technology is quite popular. Not surprisingly, the Docker company, which developed the tool and is engaged in supporting core services, received substantial investments.
- What makes Docker technology interesting for .NET developers?The same as with all other developers - Docker technology radically simplifies the deployment of applications in different areas. Directly for software developers, it is important to be able to quickly set up any number of test configurations for deploying application versions, and Docker allows you to create such configurations of any complexity.
- When did the technology become available on the Windows Server platform? What was the role of Microsoft?Microsoft is
one of the main Docker partners and is directly involved in the development of Docker for Windows Server, it
will be available in 2016 , a preliminary version is available now. Accordingly, if you combine servers based on Windows Server and Linux-based systems into one cluster through
Docker Swarm , disparate containers will “see” each other in this cluster and will be able to interact, they will have compatible APIs, i.e. it will be possible to choose the same toolkit to manage both. Thus, you can get a server that will, in effect, run a cluster of two machines, and you can run both Windows-based containers and Linux-based containers.
On June 3, a .NET DotNext developers conference will be held in St. Petersburg, and Nikita Tsukanov will give a presentation on it “Docker in the service of the .NET-developers team”