Docker¶
Docker is one of the most well known container technologies, developed by Docker Inc. that was founded in 2008, but really took off as early as 2014. You can get installation steps here or read the getting started guide. To understand Docker, we should probably start with the basics of containers, and a little history around them.
Containers¶
A container is generally an encapsulated environment that is created from one or more binaries (images) to provide some form of isolation. Read more about containers here.
What is OCI?¶
How have so many different communities come to some consensus around how containers work, or places to store them called container registries? We can thank the Open Container Initiative, or OCI, for that. The “Open Container Initiative” and encompasses a group of people and a set of projects for describing container formats and interactions. For more information about OCI, see About the Open Container Initiative, or dive into the specifications.
OCI Project Types¶
The runtime-spec, image-spec, and distribution-spec, provide details for how a container is built, or interacted with. To give you a good understanding of OCI projects, you can read more about the goals of OCI projects. When you understand the goals of each one, this puts you in a position to understand how they are used, why they are used, and how you can contribute.
Content Addressability¶
How does somebody find your house to mail a letter? They have an address, or a unique identifier for the location of your house. Containers are no different - we can calculate hashes of their content called digests and then use these addresses as unique identifiers to reference the containers. Read more about Content Addressability here.
Distributing Container Images¶
Let’s say I have a container on my host. How do I get it to you? How can you be sure that your containers are safe if your laptop crashes? The task of distributing containers offers an entire new space of challenges. Read about distributing container images here