Containers as Key Technology
A container is a runtime version of an image that includes?a streamlined Operating System, an application platform, and the app (or app component) itself.?It utilizes the OS kernel and networking of the underlying virtual or physical machine through the use of virtualization software such as Docker. A container is more lightweight than a Virtual Machine, which has its own OS and is managed by a hypervisor that virtualizes physical hardware.
An open container initiative was launched by Docker and other tech companies in 2015, and suffice it to say, Docker became the standard. When it comes to managing containers at scale, the opensource Kubernetes platform is the most popular orchestration system. Opensource is a great way to go for most software, assuming you account for support. Along those lines, for those looking to spin up Kubernetes quickly and easily, check out Rancher. It's an opensource management wrapper that makes Kubernetes easier to use; you may not need it if running Kubernetes in the cloud, though it might prove useful there too.
Why is containerization so special? It has energized and integrated various other technical solutions and accelerated the use of technology in general. A scary thought if you embrace the premise behind the Matrix or Terminator, but we can worry about that later ;-)
For example, DevOps automation didn't take off until containers became practical to use. Many challenges existed with that, but now developers can package a standard OS, server, and app all within an image that can be stored in a registry and easily deployed to run as a container on a desktop, server, or orchestration system, regardless of the hardware and OS. Also, many vendors provide container images for simpler deployment of their software. In addition, containers fostered the growth of modern architecture and distributed computing.
BENEFITS OF CONTAINERS
1. Size - A?virtual machine is often?too?large and costly for?a single app server or?instance, whereas a container is more appropriate for many applications or microservices. Containers don't replace virtual machines, since the latter often proves useful for nodes in a container orchestration system or to host large applications that don't benefit from containerization.
2.?Portability - A?container image can be built on top of other images or serve as a base for other images, and it can easily be ported to a registry, another machine, or an orchestration system. With containers, developers can work with the OS and server settings of the target platform in production, regardless of what OS they run on their desktop.
领英推荐
3.?Automation - Given a robust command-line-interface or CLI that exists in Docker, as well as Kubernetes, images can be treated like files that are built, tagged, versioned, scanned, tested, and deployed in an automated fashion using various DevOps tools.
4.?Microservices - Containers are often essential for distributed computing and modern application architecture since they allow for modular design, as well as orchestration and scaling by the likes of Kubernetes, in addition to their ease of use and portability.
5. Security - Containers are often small, meaning the attack surface is reduced, and when coupled with features in an orchestration system, they provide isolation. They present additional opportunities for security as well, including various features out-of-the-box, so they can be more secure than VMs if implemented properly.
6. Cost Savings - With containers and orchestration you can increase automation, accelerate development, reduce time-to-market, and lower run-time costs, assuming you do it right. The latter involves proper sizing, architecture, and the use of limits, among other things.
7. High Availability - In addition to automation, containers and orchestration give you the ability to implement HA quickly and effectively, which can include automated scaling too.
Containers aren't a fit for all applications. In some cases, other compute platforms may be more appropriate, such as serverless, cloud services, SaaS, VMs, or physical machines, but containers can prove useful in most enterprise environments. It's good to leverage containers where appropriate, but they are definitely an added layer of intricacy, so it's best to implement them only when clear benefits exist.
Head of Infrastructure and Architecture | Driver of Pragmatic Technical Solutions
3 年You nailed it as always. Great Summary Paul!
Director Cloud Platform Engineering - Lead Principle Engineer | Cloud Strategy, Generative AI and LLM
3 年Amazing One Paul Reilly Containers have really revolutionized how we see applications and services!
Chief Information Security Officer @ Clean Harbors | Creating Cyber Resilience and Advancing the Profession
3 年Great synopsis. I’d love to hear your thoughts on Serverless as compared to Containers. From a security perspective I think Serverless holds more promise but your article clarified for me that I can’t speak to the challenges (or ease) for DevOos adoption and success with Serverless.
Engagement Manager- Digital leader in DevOps Engineering, Professional Services, Product Engineering, Transformations, Portfolio Management.
3 年Good read Paul !