Docker is an open source software platform to create, deploy and manage virtualized application containers on a common operating system (OS), with an ecosystem of allied tools. Docker container technology debuted in 2013; Docker Inc. was formed to support a commercial edition of container management software and be the principal sponsor of an open source version. Mirantis acquired the Docker Enterprise business in November 2019.

How Docker works

Docker packages, provisions and runs containers. Container technology is available through the operating system: A container packages the application service or function with all of the libraries, configuration files, dependencies and other necessary parts and parameters to operate. Each container shares the services of one underlying operating system. Docker images contain all the dependencies needed to execute code inside a container, so containers that move between Docker environments with the same OS work with no changes.

Docker uses resource isolation in the OS kernel to run multiple containers on the same OS. This is different than virtual machines (VMs), which encapsulate an entire OS with executable code on top of an abstracted layer of physical hardware resources.

Docker was created to work on the Linux platform, but has extended to offer greater support for non-Linux operating systems, including Microsoft Windows and Apple OS X. Versions of Docker for Amazon Web Services (AWS) and Microsoft Azure are available.

Docker components and tools

Docker Community Edition is open source, while Docker Enterprise Edition is a commercialized version offered by Docker Inc. Docker consists of various components and tools that help create, verify and manage containers.

The Docker Engine is the underlying technology that handles the tasks and workflows involved in building container-based applications. The engine creates a server-side daemon process that hosts images, containers, networks and storage volumes. The daemon also provides a client-side command-line interface (CLI) for users to interact with the daemon through the Docker application programming interface. Containers created by Docker are called Dockerfiles. Docker Compose files define the composition of components in a Docker container.

Docker Hub is a software-as-a-service tool that enables users to publish and share container-based applications through a common library. The service touts more than 100,000 publicly available applications, as well as public and private container registries.

Similar to Hub, Trusted Registry is a repository with an extra layer of control and ownership over container image storage and distribution.

Docker swarm mode in Docker Engine supports cluster load balancing for Docker. Multiple Docker host resources are pooled together to act as one, which enables users to quickly scale up container deployments to multiple hosts.

The Universal Control Plane is a web-based, unified cluster and application management interface.

Compose is a tool to configure multi-container application services, view container statuses, stream log output and run single-instance processes.

Content Trust is a security tool to verify integrity of remote Docker registries, through user signatures and image tags.