We learned about containers in the previous posts. Let us discuss about Docker in this blog post.
Docker is an open source platform that allows developers to create, deploy, run, update, and manage containers. Containers have been used for some time in Linux and Unix systems, but Docker, an open source project launched in 2013, helped popularize the technology by making it easier than ever for developers to package their software to "build once and run anywhere".
Docker provides a simple way to package an application and its runtime dependencies into a single container. It also provides runtime abstraction that allows the container to run across different Linux kernel versions. A developer can create a containerized application on his or her workstation using Docker, then easily deploy the container to any Docker-enabled server. There is no need to retest or retune the container for the server environment, whether on-premises or in the cloud.
Docker also provides a software sharing and distribution mechanism, allowing developers and operations teams to easily share and reuse container content. This distribution mechanism, combined with machine portability, contributes to Docker's popularity among operations teams and developers.
Developers can create containers without using Docker by utilizing capabilities built into Linux and other operating systems. Docker, on the other hand, makes containerization faster, easier, and safer. Docker also refers to Docker Inc., which sells the commercial version of Docker, as well as the Docker open source project, to which Docker, Inc., as well as many other organizations and individuals, contribute.
A brief history of Docker
Docker (both the technology and the company) began as dotCloud, a public PaaS offering. It was started by Solomon Hykes and Sebastien Pahl. Container technology facilitated PaaS solutions by introducing new capabilities such as live migrations and updates without interruption.
DotCloud's underlying container technology was open-sourced and renamed the Docker Project in 2013. Soon after dotCloud was renamed to Docker Inc. it began developing its own management platform in addition to contributing to the Docker container technology.
Docker's popularity spawned several management platforms, including Marathon, Kubernetes, Docker Swarm, and, more broadly, the DC/OS environment that Mesosphere built on top of Mesos to manage not only containers, but also a wide range of legacy applications and data services.
Red Hat announced a Docker collaboration in 2013, and Microsoft, AWS, Stratoscale, and IBM followed suit in 2014. Docker's first version for an operating system other than Linux was announced in 2016.
Windocks released a port of Docker's OSS project designed to run on Windows. By the end of the year, Microsoft announced that Docker was now supported natively on Windows via Hyper-V.
Docker image containers can run on Linux and Windows natively. However, Windows images can only run on Windows hosts, whereas Linux images can run on both Linux and Windows hosts, where host refers to a server or a virtual machine.
Microsoft announced the WSL2 in 2019, allowing Docker to run on Windows without the need for a virtualized machine on Hyper-V. Docker is now multiplatform natively, while still leveraging Linux's container approach.
Finally, in 2020, Docker became the global container platform of choice. This occurred not because it is superior to others, but because it unifies all implementations under a single user-friendly platform with a CLI and a Daemon.
Advantages of Docker -
Docker containers make it possible to create applications that are easier to assemble, maintain, and move around than previous methods. This has several benefits for software developers.
1. Docker containers are lightweight and portable
Docker isolates applications and their environments to keep them clean and minimal, allowing for more granular control and greater portability.
2.Docker containers allow for modularity
Containers make it easier for developers to combine an application's building blocks into a modular unit with easily interchangeable parts, which can speed up development cycles, feature releases, and bug fixes.
3. Docker containers make orchestration and scaling more convenient
Because containers are lightweight, developers can launch a large number of them to improve service scaling. These container clusters must then be orchestrated, which is where Kubernetes comes in.
4. Docker Hub
Docker users also benefit from Docker Hub's expanding ecosystem, which can be thought of as a "app store for Docker images." Tens of thousands of public images created by the community are readily available for use on Docker Hub. It's incredibly simple to find images that meet your requirements and are ready to download and use with little to no modification.
Drawbacks of Docker -
1. Docker containers are not virtual machines
Containers, as opposed to virtual machines, use controlled portions of the host operating system's resources, which means that elements aren't as strictly isolated as they would be on a VM.
2. Docker containers do not provide bare-metal performance
Containers are lighter and closer to the metal than virtual machines, but they do have some performance overhead. If your workload necessitates bare-metal performance, a container will get you close but not quite there.
3. Docker containers are immutable and stateless
Containers start and run from an image that describes what they contain. That image is immutable by default—it does not change once it is created. However, a container instance is only temporary. When it is deleted from system memory, it is gone for good. If you want your containers to retain state across sessions, like a virtual machine, you must plan for it.
That's all! I hope you enjoyed it, and that it has made your Docker journey a little easier.
In the next blog we will see the components of docker and it's usage.
Thank you for reading!
*** Explore | Share | Grow ***
Comments