Container Technology (Docker) Intro
Containers are a method of OS (operating system) virtualization that enables to run an application in an isolated and controlled environment, by having that we can easily package the application’s code and configurations into blocks. This technology allows to do so much, with it we gain in:
- Environmental consistency, containers makes the application production life cycle much easier and technical issues free
- Operational efficiency, containers allow to quickly and easily create and terminate applications, scale up and down, with the possibility of specifying the exact amount of CPU, memory and disk space to be used. We can also have multiple applications running on the same instance, with a fast boot time since the container is just a process running on the OS.
- Version control, with that versions of the code of the application can be tracked.
- Productivity, the productivity of the developers is booster since using segregated containers take away the library conflict problems.
- Fast deployment of apps, apps needs to be rapidly delivered to answer the business demands.
- Reliability, having a system function without interruption or downtime for a specific period of time is critical.
- Granular control, having visibility and control over the environment is of the essence.
Containers have been around for more than a decade but have been gaining in popularity these past years thanks to Docker that pushed the boundaries of this technology. Docker is the leader in container technologies, and that positions is well earned. Docker is adaptable in different environments and can work for Ops and for Developers.
Docker runs the same operating system as its host, and with that it can share a lot of the host system’s resources. It uses a layered file system AuFS that way the read only and write part are merged together. You can give each container a specific amount for writing, and have the read only for the common part of the system shared between all containers.
As for virtualization, it is more isolated but much heavier, as it the virtualized system gets its own set of resources.
With Virtualization, you get full isolation and the resources are guaranteed, but it’s much heavier.
With Docker you get less isolation, but the containers are light allowing to run so many containers containing different services faster. It all comes down to your needs.