Containerization
How to deploy and ship applications with containers. Plus a deep dive into the Docker technology.
Hi Friends,
Welcome to the 58th issue of the Polymathic Engineer newsletter. This week, we will talk about containerization, a well-known technology for deploying and shipping applications.
Containers are a streamlined way to package and run software applications. They allow to build an application in any programming language using any operating system (OS).
Containerized applications can run anywhere on anything and be more efficiently deployed into cloud environments.
In this article, we will analyze the concept of containers, focusing on the Docker platform, which has become the de facto standard technology.
The outline will be as follows:
Containers vs Virtual Machines
What is Docker
Images and Dockerfile
Naming and Tagging
Windows vs Linux Containers
Containers lifecycle
Docker Hub and Registries
How to persist Data
Networking
Docker Compose
Containers vs Virtual Machines
The concept of container is somehow related to the one of Virtual Machines (VM), but there are significant differences between them.
In a VM, an application lives without sharing resources. It has an entire OS, including its kernel, file system, network interfaces, etc. The VM operating system is completely separated from the one of the host, creating an execution environment that overcomes most of the drawbacks of running applications directly on the host OS.
In a container, an application has individual resources but shares core resources with others. Each container has a very small OS and uses the host OS for additional resources. Containers offer an alternative to running applications directly on the host or in a VM that can make the applications faster, more portable, and more scalable.
Here is a summary of the advantages of using containers:
small footprint (no more a full OS to run a single application)
fast startup time and reduced CPU consumption
high portability (all that is needed to run the application is packaged together)
isolation (each container has a separate slice of OS and memory)
What is Docker
Docker is a container technology that is the de facto standard in the industry. Using any system, it is very easy to have Docker installed and running as a service in just a few minutes.