# Containerization (computing)

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Containerization_(computing)
> Markdown URL: https://mediated.wiki/source/Containerization_(computing).md
> Source: https://en.wikipedia.org/wiki/Containerization_(computing)
> Source revision: 1352599589
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{Short description|Cloud computing concept}}
[[File:Podman Desktop Containers Terminal screenshot.webp|alt=Screenshot of Podman Desktop showing a terminal of container|thumb|[Podman](/source/Podman) is an example of container manager]]
In [software engineering](/source/software_engineering), '''containerization''' is [operating-system-level virtualization](/source/OS-level_virtualization) or [application-level virtualization](/source/application-level_virtualization) over multiple resources so that software applications can run in isolated user spaces called ''containers'' in any [cloud](/source/Cloud_computing) or non-cloud environment, regardless of type or vendor.<ref>{{cite web |last1=Scheepers |first1=Mathijs Jeroen |date=2014 |title=Virtualization and Containerization of Application Infrastructure: A Comparison |url=https://thijs.ai/papers/scheepers-virtualization-containerization.pdf |archive-url=https://web.archive.org/web/20240928043944/https://thijs.ai/papers/scheepers-virtualization-containerization.pdf |archive-date=2024-09-28 |access-date=2025-09-01 |website=thijs.ai |publisher=Thijs Scheepers |s2cid=18129086}}</ref> The term "container" has different meanings in different contexts, and it is important to ensure that the intended definition aligns with the audience's understanding.<ref>{{Cite book |title=Cloud Foundry: The Definitive Guide Develop, Deploy, and Scale| first= Duncan C. E.| last= Winn| publisher= O'Reilly Media, Inc. |year= 2017 |isbn= 9781491932544}}</ref><ref>{{Cite web|title= Concepts: Containers| website= Kubernetes.io| publisher= | url=https://kubernetes.io/docs/concepts/containers/ | date= | access-date= }}</ref>

== Usage ==
Each ''container'' is basically a fully functional and portable cloud or non-cloud computing environment surrounding the application and keeping it independent of other environments running in parallel.<ref>{{Cite web|title=What is containerization?|url=https://www.redhat.com/en/topics/cloud-native-apps/what-is-containerization|url-status=live|access-date=2021-07-10|website=www.redhat.com|publisher=[RedHat](/source/RedHat)|language=en|archive-url=https://web.archive.org/web/20210508174632/https://www.redhat.com/en/topics/cloud-native-apps/what-is-containerization |archive-date=2021-05-08 }}</ref> Individually, each container simulates a different software application and runs isolated processes<ref>{{Cite web|last1=Hinck|first1=Tim Maurer, Garrett|last2=Hinck|first2=Tim Maurer, Garrett|title=Cloud Security: A Primer for Policymakers|url=https://carnegieendowment.org/research/2020/08/cloud-security-a-primer-for-policymakers?lang=en|access-date=2021-07-10|website=Carnegie Endowment for International Peace|language=en}}</ref> by bundling related configuration files, libraries and dependencies.<ref>{{Cite web|last=Rubens|first=Paul|date=2017-06-27|title=What are containers and why do you need them?|url=https://www.cio.com/article/2924995/what-are-containers-and-why-do-you-need-them.html|access-date=2021-07-10|website=CIO|language=en}}</ref> But, collectively, multiple containers share a common [operating system kernel](/source/Kernel_(operating_system)) (OS).<ref>{{Cite web|title=Containerization|url=https://www.ibm.com/in-en/cloud/learn/containerization|access-date=2021-07-10|website=www.ibm.com|language=en-in}}</ref>

In recent times, containerization technology has been widely adopted by cloud computing platforms like [Amazon Web Services](/source/Amazon_Web_Services), [Microsoft Azure](/source/Microsoft_Azure),  [Google Cloud Platform](/source/Google_Cloud_Platform), and [IBM Cloud](/source/IBM_Cloud).<ref>{{Cite web|last=December 2019|first=Jonas P. DeMuro 18|title=What is container technology?|url=https://www.techradar.com/in/news/what-is-container-technology|access-date=2021-07-10|website=TechRadar India|date=18 December 2019|language=en}}</ref> Containerization has also been pursued by the U.S. Department of Defense as a way of more rapidly developing and fielding software updates, with first application in its [F-22](/source/Lockheed_Martin_F-22_Raptor) air superiority fighter.<ref>{{cite web |url=https://aviationweek.com/defense-space/sensors-electronic-warfare/flight-test-clears-f-22-fleet-accept-third-party-software |title=Flight Test Clears F-22 Fleet To Accept Third-Party Software |work=Aviation Week |date=30 August 2022}}</ref>

== History ==
The concept of containerization in computing originated from early operating system–level isolation mechanisms. One of the earliest implementations was the [chroot](/source/chroot) system call introduced in Version 7 [Unix](/source/Unix) in 1979, which changed the apparent root directory for a process and its children, providing a basic form of filesystem isolation.<ref>{{Cite web |title=chroot(2) |url=https://man.freebsd.org/cgi/man.cgi?query=chroot&sektion=2 |access-date=2026-05-05 |website=man.freebsd.org}}</ref>

In the early 2000s, more advanced forms of operating system–level virtualization were developed. [FreeBSD](/source/FreeBSD) introduced "jails" in 2000, which extended isolation by restricting processes to a subset of system resources. Around the same time, [Solaris](/source/Oracle_Solaris) introduced "zones" (also known as Solaris Containers), providing similar capabilities with resource management and isolation features.

Linux later incorporated comparable functionality through kernel features such as namespaces and control groups (cgroups), which enabled isolation of process IDs, network stacks, filesystems, and resource allocation. These features formed the foundation for Linux Containers ([LXC](/source/LXC)), which provided a userspace interface for managing containers.

The widespread adoption of containerization accelerated with the release of [Docker](/source/Docker_(software)) in 2013, which introduced a standardized format for packaging applications and their dependencies, along with tooling for image distribution and container management.

== Types of containers ==
* OS containers
* Application containers

== Security issues ==
* Because of the shared OS, security threats can affect the whole containerized system.
* In containerized environments, security scanners generally protect the OS, but not the application containers, which adds unwanted vulnerability.

== Container management, orchestration, clustering ==
Container [orchestration](/source/Orchestration_(computing)) or container management is mostly used in the context of application containers.<ref>{{Cite web |title=What is Container Orchestration? Definition & Related FAQs |url=https://avinetworks.com/glossary/container-orchestration/ |access-date=2024-04-29 |website=Avi Networks}}</ref> Implementations providing such orchestration include [Kubernetes](/source/Kubernetes) and [Docker swarm](/source/docker_(software)).

== Container cluster management ==
Container clusters need to be managed. This includes functionality to create a cluster, to upgrade the software or repair it, balance the load between existing instances, scale by starting or stopping instances to adapt to the number of users, to log activities and monitor produced logs or the application itself by querying sensors. Open-source implementations of such software include [OKD](/source/OKD_(software)) and Rancher. Quite a number of companies provide container cluster management as a managed service, like [Alibaba](/source/Alibaba_Group), [Amazon](/source/Amazon_(company)), [Google](/source/Google), and [Microsoft](/source/Microsoft).

== See also ==
{{div col}}
* [Docker (software)](/source/Docker_(software))
* [Kubernetes](/source/Kubernetes)
* [Open Container Initiative](/source/Open_Container_Initiative)
* [Podman](/source/Podman)
* [Virtual machine](/source/Virtual_machine)
* [Information hiding](/source/Information_hiding)
* [Separation of concerns](/source/Separation_of_concerns)
* [Software component](/source/Software_component)
* [Sandbox (computer security)](/source/Sandbox_(computer_security))
* [Sandbox (software development)](/source/Sandbox_(software_development))
{{div col end}}

== Further reading ==
=== Journal articles ===
{{refbegin}}
* {{cite journal |last1=Bentaleb |first1=Ouafa |last2=Belloum |first2=Adam S. Z. |last3=Sebaa |first3=Abderrazak |last4=El-Maouhab |first4=Aouaouche |title=Containerization technologies: taxonomies, applications and challenges |journal=The Journal of Supercomputing |date=8 June 2021 |volume=78 |pages=1144–1181 |doi=10.1007/s11227-021-03914-1 |s2cid=236220833 }}
* Moreau, David; Wiebels, Kristina; Boettiger, Carl (2023). Containers for computational reproducibility. ''[Nature Reviews Methods Primers](/source/Nature_Reviews_Methods_Primers),'' 3 (50). https://doi.org/10.1038/s43586-023-00236-9
* {{cite journal |last1=Watada |first1=Junzo |last2=Roy |first2=Arunava |last3=Kadikar |first3=Ruturaj |last4=Pham |first4=Hoang |last5=Xu |first5=Bing |title=Emerging Trends, Techniques and Open Issues of Containerization: A Review |journal=IEEE Access |date=2019 |volume=7 |pages=152443–152472 |doi=10.1109/ACCESS.2019.2945930 |bibcode=2019IEEEA...7o2443W |s2cid=204970781 |doi-access=free }}
* {{cite journal |last1=van den Berg |first1=Tom |last2=Siegel |first2=Barry |last3=Cramp |first3=Anthony |title=Containerization of high level architecture-based simulations: A case study |journal=The Journal of Defense Modeling and Simulation: Applications, Methodology, Technology |date=April 2017 |volume=14 |issue=2 |pages=115–138 |doi=10.1177/1548512916662365 |s2cid=64405143 |doi-access=free }}
* {{cite book |doi=10.1007/978-981-15-8411-4_4 |chapter=Containerization Design for Autonomous and Controllable Cloud Distributed System |title=Communications, Signal Processing, and Systems |series=Lecture Notes in Electrical Engineering |year=2021 |last1=Zhang |first1=Xiao |last2=Tang |first2=Yu |last3=Li |first3=Hao |last4=Liu |first4=Shaotao |last5=Lin |first5=Di |volume=654 |pages=30–38 |isbn=978-981-15-8410-7 |s2cid=236762442 }}
* {{cite book |doi=10.1007/978-3-030-24305-0_30 |chapter=Virtualization, Containerization, Composition, and Orchestration of Cloud Computing Services |title=Computational Science and Its Applications – ICCSA 2019 |series=Lecture Notes in Computer Science |year=2019 |last1=Odun-Ayo |first1=Isaac |last2=Geteloma |first2=Victor |last3=Eweoya |first3=Ibukun |last4=Ahuja |first4=Ravin |volume=11622 |pages=403–417 |isbn=978-3-030-24304-3 |s2cid=195769647 }}
{{refend}}

=== Books ===
{{refbegin}}
* Gabriel N. Schenker, Hideto Saito, Hui-Chuan Chloe Lee, Ke-Jou Carol Hsu, (2019) ''Getting Started with Containerization: Reduce the operational burden on your system by automating and managing your containers'', [Packt Publishing](/source/Packt_Publishing), {{ISBN|978-1-83864-903-6}}
* Jeeva S. Chelladhurai, Vinod Singh, Pethuru Raj (2014), ''Learning Docker'', [Packt Publishing](/source/Packt_Publishing), {{ISBN|978-0-9888202-0-3}}
{{refend}}

== References ==
{{reflist}}

{{Virtualization software}}

Category:Cloud computing
Category:Containerization software

{{software-eng-stub}}

---
Adapted from the Wikipedia article [Containerization (computing)](https://en.wikipedia.org/wiki/Containerization_(computing)) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Containerization_(computing)?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
