What is a Docker Container? In Part 2 we learn how Docker containers work. Visit Part 1 of this series where we explore the Docker open source project.
Docker is an open-source platform for managing and distributing Linux container applications using a system of clients, images, and registries. It is one platform for managing Linux containers, which are used to build distributed applications that can run as discrete workloads processed on the same Linux operating system kernel. Docker containers helped popularize the use of containers by simplifying management and creating a standardized way to implement and manage distributed applications. Docker Inc. is also the name of a commercial company that markets Docker container tools and products.
Docker Container Architecture
Container technology emerged from the Linux world, based on key features in the Linux kernel, including cgroups and namespaces. These features allow lightweight workloads to be virtualized within the Linux OS. This has become a popular way to build applications because of the speed and agility with which the applications can be built, tested, and deployed.
Linux container features were first exploited most publicly by Google, Inc., which built its data-center on the technology and also developed the open source project Kubernetes for managing containers and container clusters. It became clear that just having container features in Linux was not enough: management tools would be needed well. Docker containers and Linux containers (LXCs) emerged as ways to manage containerized applications and make them portable across networks.
Docker engineered its containers to be operated by means of a command-line tool called the Docker client. This client may run on the container host, or through a remote interface connected to the container host. The principal job of a Docker client is to pull images of containers from a registry, which is a public or private repository of sources for ready-to-run virtual workloads. Docker Hub is the main public registry operated by Docker Inc., although there are now many others.
Once the Docker daemon pulls a container image, it builds a working model for that container using a short batch of instructions, sometimes numbering as few as one. This build file may also include directives for the daemon to pre-load the container with other components prior to running, or directives to be given to the local command line once the local container image is built (thus necessitating the local, minimalized OS).
Registries to the Rescue
The model of images and registries created standardized ways to build, load and manage containerized applications. Docker has been very successful by building a following in the open-source community, which has contributed to the growth of the number of images in both public and private registries, which in turn attracts more developers.
For some application developers, using Docker containers and other Linux container technology presents advantages over virtualization techniques such as virtual machines (VMs). With server virtualizations, a hypervisor enables a host to run several several instances of OSes, while Docker runs multiple containerized workloads on the same OS. By using containers, only the programs and their immediate dependencies are hosted by containers, with critical resources provided by the underlying operating system. This means that containerized systems can load applications faster and consume less resources.
Open Source Standards
With the emergence of competing Linux container platforms and management tools, the development community is concerned about interoperability of container technologies. This has resulted in some momentum for open standards for container technologies.
Docker Inc. helped launch an open standards group in June 2015 called the Open Container Initiative (OCI). An OCI container or Docker container can help server workloads be started, transmitted, and managed in a standardized format. This enables the workloads to be created large, distributed applications that can be automated in data centers.
The container technology world is still quite new, and it is expected to grow rapidly over the next few years. A number of startups are pursing niche areas within containers such as security, storage, and networking functionality. Docker Inc. has estimated that more than $400 million has been invested in startup sin the container technology area.