🌐 🇵🇱 Polski · 🇬🇧 EN
Docker, by encyclopedic definition, is open-source software serving as a "platform for developers and sysadmins" to build, deploy, and run distributed applications. The concept of containerization, or the ability to isolate an application in a separate space, is nothing new. The first steps in this area were taken by Softricity, which presented the Solaris Zones product available with version 10 of the Solaris system. Containers also made their mark in Linux environments (LXC), but managing this type of containerization was neither intuitive nor convenient, and therefore it did not gain popularity.
Virtualization and cloud solutions, however, gained popularity. Applications served from a virtual machine run on a specific operating system and/or application server, forming a uniform environment of interdependent links. This approach means that separate applications on separate machines with their own operating systems and other dependencies require significant resources. For this reason, the development community set out to create a more efficient solution. This problem also concerns major players like Google, Microsoft, and Amazon, who have contributed to the development of the technology offered by Docker.
In the container approach, it is not required for each application to have its own operating system, yet it retains its distinctiveness in the form of its own namespace, its own file system, and the ability to regulate the amount of reserved resources for each container independently. Process isolation per container is also ensured. A given container contains all the components of an application needed for it to function. Updating containers is done by updating them in the form of images.
Docker combines a standardized package format with ease of use, which resulted in container-based processes—previously convoluted and quite complicated to use—being transformed into mechanisms that are easy for developers and administrators to implement. Thanks to Docker technology, the capabilities offered by Linux systems can now reside on many operating systems, as it can also function outside of its native OS.
In the application of Docker technology, improvements in performance and application scalability have also been observed. Encapsulating an application in a container limits its impact on its operating environment. Essential system applications are minimized to hundreds, and often only tens of megabytes, which provides incomparable benefits considering that traditional virtual machine images are usually gigabytes in size.
Another gain is time. Starting a container usually takes milliseconds, which is a significant and noticeable difference compared to the time required to boot an entire virtual machine.
Beyond the mentioned advantages, containers also present challenges. One of the challenges users will face is container management. As the number of containers grows, the risk of getting lost in the maze increases, and on top of that, you have to keep track of what is inside those containers. Furthermore, one must master methods for updating and restoring containers while maintaining order, and ensure that old, unused ones are removed. These issues must be resolved before a decision is made to migrate critical applications to a containerized form.
The first 5-minute presentation of the Docker product - that's where it all began
Introduction to Docker
The first 5-minute presentation of the Docker product - that's where it all began
Introduction to Docker
Docker on Windows
Useful links:
- Official Docker project website
- Github - Docker
- What is Docker - Opensource.com
- Docker Documentation
- YouTube - Docker
- Blogersii - Docker introduction
Comments