Containers

What is Container?
Self contained package that contains everything that binary/application need to run.
Only 1 Application can run inside container and all its dependent libraries. Each container has its own: Network interface, IP address, file system, All containers share the kernel of the host.

Issues without containers?
1. App-1 have dependency on shared library(libcv1). App-1 have dependency on shared library(libcv2). Both cannot run on production.
2. All programs to share same versions of shared libraries which makes application tightly coupled.

Advantages of Containers
1. lightweight Use less memory: Simple web application running inside container takes 100MB space.
2. Secure: Reduces the chance that malicious code present in one container impacting other containers or invade the host system.
3. Portable: abstraction from the host operating system makes containerized applications portable ie able to run on any OS,VM.
Container Diagram