Each container runs as an isolated process(having a separate process id ) in the user space.Normally the container images are very small in size (tens of MB in size) and start almost instantly.As we can see from the architecture perspective each app code is separately encoded with its own .bin files and Library dependencies and run on Host as a separate process at user level sharing same operating system in the context of Kernel.
Container services are portable in nature.For instance, if there is a requirement of a small size image of the concerned application to be run, a new container service can be created that uses only new libraries.As long as server settings are identical across systems, an application container can run on any system and in any cloud without requiring code changes.In short, there are no dependencies on the operating system environment variables.
One of the major drawbacks of the container service is that lack of isolation from the O.S so security threats can easily access the system.
Some advantages of Docker Container services include:
- Consistency across development, test, and production
- Fast and agile application deployment; instant start-up
- Cloud portability
- Density, partitioning, scale
Azure container services are a platform to create, manage and configure virtual machines that act as hosts for these container services.
These container services expose endpoints for containerization, a few examples are Docker Swam and Kubernets.Via these end points, any software that is capable of talking to those end points can be leveraged.In a case of Docker Swarm, Docker command line interfaced is used.For kubernets Kubectl is leveraged.
The orchestration is a broad term that refers to activities such as container scheduling, cluster management, and possibly the provisioning of additional hosts.
These end points like Docker Swarm and Kubernets are also termed as Orchestration tools.
Features of Orchestration tools.
- Container cluster deployment and management
- Container placement and management
- Scheduling and automation
- Service discovery and networking
- Monitoring and logging
An overview of Docker, Docker is the world’s leading software container platform.
Developers use Docker to eliminate problems like integrating apps with the machine environment.
Docker applications are easy to integrate as the code dependencies are neatly configured and a code is perfectly isolated and encapsulated.
Operators use Docker to run and manage apps side by side in isolated containers to achieve better compute density.
Enterprises use Docker to build agile Software pipelines to ship new features faster, more securely and with confidence for both Linux and Windows Server apps.
Docker Swarm an overview
Docker Swarm container Orchestration tool uses Standard Docker API and networking mainly targeted for Docker container Developers.
Docker Swarm features include:
- Integrated networking and volumes
- Failover and high availability
- Flexible container scheduling, which allows filtering through node tags, affinity, and employs scheduling strategies like spread and binpack
- Support for scheduler plugins from Mesos or Kubernetes, while still using the Docker client for a consistent developer experience
- Support for multiple methods of node discovery
Kubernets is orchestration technology from Google.It is an open source. Kubernets mainly focuses on developing and deploying container services for cloud
DC/OS is designed for large scale clusters built open, and supports a diverse array of workloads including containers, big data, and traditional applications.