top of page

Can you contain? Containers!

  • Writer: Sash Barige
    Sash Barige
  • Aug 11, 2018
  • 2 min read

Containers are standardized units of software that package code and dependencies together. Containers are lightweight, isolated, and portable units of software that package up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. They allow applications to run quickly and reliably from one environment to another. Containers isolate applications from each other and the underlying infrastructure via container engines. Containers are a form of operating system virtualization, but they are more lightweight and efficient than traditional virtual machines.


Types of Containers


Side-by-side comparison of its strengths and weaknesses

​Container Orchestration Container orchestration is the process of managing and automating the deployment, scaling, and monitoring of containers. Container orchestration tools can help organizations to run containers at scale and to manage complex containerized applications. Orchestration manages and coordinates containers across clusters of hosts:

  • Kubernetes - The leading open-source orchestration platform. Developed by Google and offers extensive features.

  • Docker Swarm - Docker's native clustering and scheduling tool. Simpler but less features than Kubernetes.

  • Apache Mesos - Abstracts CPU, memory, and other resources away from machines. Commonly used with Kubernetes.

​Container Management Tools Tools that help deploy, manage, and monitor containers:

  • Docker Engine - The core Docker toolset to build and containerize apps.

  • Docker Compose - Define and run multi-container Docker apps.

  • Docker Machine - Install and manage Docker hosts and deploy containers.

  • Prometheus - Monitoring system and time series database.

  • Portainer - is a lightweight, open-source container management UI. It provides a web-based interface for managing Docker containers and Docker Compose applications.

  • Rancher - Rancher is a commercial container management platform. It provides a unified platform for managing containers and Kubernetes clusters.

  • Kubernetes - Orchestrates container lifecycle and networking.

  • Docker Swarm - Docker Swarm is a native Docker container orchestration platform. It is designed to be easy to use and to be compatible with Docker.

  • Apache Mesos - Apache Mesos, orchestration platform, is a distributed system kernel that can be used to manage containerized applications. It is more complex than Kubernetes or Docker Swarm, but it offers more flexibility.


Regarding Kubernetes, it is a powerful container orchestration system that can help manage large numbers of containers across multiple hosts. The decision to adopt a solution like Kubernetes would depend on various factors such as the complexity and scale of the application, the need for high availability, and the level of automation required in the deployment and management of the application.


In general, I believe that the adoption of Kubernetes or other container orchestration solutions is appropriate when an organization has a significant number of containers to manage, or when the organization requires a high level of automation and resilience in its application deployment and management. However, each organization's needs and circumstances are unique, and it is important to evaluate the specific benefits and costs of adopting a new technology like Kubernetes before making a decision.


All three major cloud providers offer support for containers.

  • Azure: Azure Container Instances (ACI) provides a serverless environment for running containers. Azure Kubernetes Service (AKS) provides a managed Kubernetes service.

  • AWS: Amazon Elastic Container Service (ECS) provides a service for running Docker containers. Amazon Elastic Kubernetes Service (EKS) provides a managed Kubernetes service.

  • GCP: Google Kubernetes Engine (GKE) provides a managed Kubernetes service. Cloud Run is a serverless platform for running containers.

Best Practices for Containers

  • Leverage orchestration and management tools for scale.

  • Track tags and image versions closely.

  • Limit container lifetimes and persistence.

  • Modularize containers and services.

  • Monitor resource usage and logs closely.

  • Standardize the tooling and environment across teams.

  • Automate builds, tests, and deployments.

  • Control access and permissions tightly.

  • Use a container registry to store and manage your container images.

  • Use a container orchestration tool to manage the deployment and scaling of your containers.

  • Use a container management tool to monitor the performance of your containerized applications.

  • Implement security best practices for your containerized applications.

Containers are a powerful technology for running software applications. They offer a number of benefits, including portability, efficiency, and scalability. Container orchestration and management tools can help organizations to run containers at scale and to manage complex containerized applications.


You can further read on containers and Kubernetes:

Books:

  • "Kubernetes: Up and Running" - Kelsey Hightower et al. - A thorough hands-on guide.

  • "Docker Deep Dive" - Nigel Poulton - Technical overview of Docker container fundamentals.

  • "The Kubernetes Book" - Nigel Poulton - An introduction to Kubernetes concepts.

Foundational Docs:

  • "Docker Overview" - Docker's introduction to containers.

  • "Kubernetes Concepts" - Kubernete's main concepts and architecture.

  • "What is a Container" - Red Hat article contrasting virtual machines.

Talks/Videos:

  • "A Technical Overview of Kubernetes" - Brendan Burns at KubeCon - Architecture overview.

  • "Top 10 Kubernetes Concepts for Beginners" - Mumshad Mannambeth YouTube video.

  • "Containers from Scratch" - Liz Rice - Builds a container runtime from basic Linux primitives.

Thought Leadership:

  • "Kubernetes is the new Java EE" - Adam Bien blog post on Kubernetes as new standard.

  • "Are we in a container bubble" - Adrian Cockcroft blog post on container ecosystem explosion.

  • "The Future of Kubernetes is Serverless" - Aparna Sinha on Kubernetes runtime.


Sash Barige

Aug/11/2018


Photo Credit: Unsplash.com

Comments


bottom of page