Docker is a set of
platform as a service (PaaS) products that use
OS-level virtualization to deliver software in packages called ''
containers
A container is any receptacle or enclosure for holding a product used in storage, packaging, and transportation, including shipping.
Things kept inside of a container are protected on several sides by being inside of its structure. The term ...
''.
The service has both free and premium tiers. The software that hosts the containers is called Docker Engine.
It was first released in 2013 and is developed by
Docker, Inc.
Docker is a tool that is used to automate the deployment of
applications in lightweight containers so that applications can work efficiently in different environments in isolation.
Background
Containers are isolated from one another and bundle their own software,
libraries
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
and configuration files; they can communicate with each other through well-defined channels.
Because all of the containers share the services of a single
operating system kernel, they use fewer resources than
virtual machine
In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
s.
Operation

Docker can package an application and its dependencies in a virtual container that can run on any
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
,
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
, or
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
computer. This enables the application to run in a variety of locations, such as
on-premises, in
public
In public relations and communication science, publics are groups of individual people, and the public (a.k.a. the general public) is the totality of such groupings. This is a different concept to the sociology, sociological concept of the ''Öf ...
''(see
decentralized computing
Decentralized computing is the allocation of resources, both hardware and software, to each individual workstation, or office location. In contrast, centralized computing exists when the majority of functions are carried out or obtained from ...
,
distributed computing
Distributed computing is a field of computer science that studies distributed systems, defined as computer systems whose inter-communicating components are located on different networked computers.
The components of a distributed system commu ...
, and
cloud computing
Cloud computing is "a paradigm for enabling network access to a scalable and elastic pool of shareable physical or virtual resources with self-service provisioning and administration on-demand," according to International Organization for ...
)'' or
private cloud.
When running on Linux, Docker uses the resource isolation features of the
Linux kernel
The Linux kernel is a Free and open-source software, free and open source Unix-like kernel (operating system), kernel that is used in many computer systems worldwide. The kernel was created by Linus Torvalds in 1991 and was soon adopted as the k ...
(such as
cgroups and kernel
namespaces
In computing, a namespace is a set of signs (''names'') that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified.
Namespaces ...
) and a
union-capable file system (such as
OverlayFS)
to allow containers to run within a single Linux instance, avoiding the overhead of starting and maintaining
virtual machine
In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
s. Docker on macOS uses a Linux
virtual machine
In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
to run the containers.
Because Docker containers are
lightweight
Lightweight is a weight class in combat sports and rowing (sport), rowing.
Boxing Professional boxing
The lightweight division is over 130 pounds (59 kilograms) and up to 135 pounds (61.2 kilograms) boxing weight classes, weight class in the spor ...
, a single server or virtual machine can run several containers simultaneously.
A 2018 analysis found that a typical Docker use case involves running eight containers per host, and that a quarter of analyzed organizations run 18 or more per host.
It can also be installed on a single board computer like the
Raspberry Pi
Raspberry Pi ( ) is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in collaboration with Broadcom Inc., Broadcom. To commercialize the product and support its growing demand, the ...
.
The Linux kernel's support for namespaces mostly
isolates an application's view of the operating environment, including process trees, network, user IDs and mounted file systems, while the kernel's cgroups provide resource limiting for memory and CPU.
Since version 0.9, Docker includes its own component (called ) to use virtualization facilities provided directly by the Linux kernel, in addition to using abstracted virtualization interfaces via
libvirt,
LXC and
systemd-nspawn.
Docker implements a high-level
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
to provide lightweight containers that run processes in isolation.
Licensing model
* The Docker Engine is licensed under the
Apache License 2.0. Docker Desktop distributes some components that are licensed under the
GNU General Public License
The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
. Docker Desktop is not free for large enterprises.
* The Dockerfile files can be licensed under an open-source license themselves. The scope of such a license statement is only the Dockerfile and not the container image.
Components
The Docker software as a service offering consists of three components:
* Software: The Docker
daemon, called
dockerd
, is a persistent process that manages Docker containers and handles container objects. The daemon listens for requests sent via the Docker Engine API.
The Docker client program, called
docker
, provides a
command-line interface
A command-line interface (CLI) is a means of interacting with software via command (computing), commands each formatted as a line of text. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user ...
(CLI) that allows users to interact with Docker daemons.
* Objects: Docker objects are various entities used to assemble an application in Docker. The main classes of Docker objects are images, containers, and services.
** A Docker container is a standardized, encapsulated environment that runs applications.
A container is managed using the Docker API or
CLI CLI may refer to:
Computing
* Call Level Interface, an SQL database management API
* Command-line interface, of a computer program
* Command-line interpreter or command language interpreter; see List of command-line interpreters
* CLI (x86 instruc ...
.
** A Docker image is a read-only template used to build containers. Images are used to store and ship applications.
** A Docker service allows containers to be scaled across multiple Docker daemons. The result is known as a ''swarm'', a set of cooperating daemons that communicate through the Docker API.
* Registries: A Docker registry is a repository for Docker images. Docker clients connect to registries to download ("pull") images for use or upload ("push") images that they have built. Registries can be public or private. The main public registry is Docker Hub. Docker Hub is the default registry where Docker looks for images.
Docker registries also allow the creation of notifications based on events.
Dockerfile (example)
A Dockerfile is a text file that commonly specifies several aspects of a Docker container: the
Linux distribution
A Linux distribution, often abbreviated as distro, is an operating system that includes the Linux kernel for its kernel functionality. Although the name does not imply product distribution per se, a distro—if distributed on its own—is oft ...
, installation commands for the programming language runtime environment and application source code.
An example of a Dockerfile:
ARG CODE_VERSION=latest
FROM ubuntu:$
COPY ./examplefile.txt /examplefile.txt
ENV MY_ENV_VARIABLE="example_value"
RUN apt-get update
# Mount a directory from the Docker volume
# Note: This is usually specified in the 'docker run' command.
VOLUME /myvolume"
# Expose a port (22 for SSH)
EXPOSE 22
Tools
* Docker Compose is a tool for defining and running multi-container Docker applications.
It uses
YAML files to configure the application's services and performs the creation and start-up process of all the containers with a single command. The
docker compose
CLI utility allows users to run commands on multiple containers at once; for example, building images,
scaling containers, running containers that were stopped, and more.
Commands related to image manipulation, or user-interactive options, are not relevant in Docker Compose because they address one container.
The docker-compose.yml file is used to define an application's services and includes various configuration options. For example, the
build
option defines configuration options such as the Dockerfile path, the
command
option allows one to override default Docker commands, and more.
The first public beta version of Docker Compose (version 0.0.1) was released on December 21, 2013.
The first production-ready version (1.0) was made available on October 16, 2014.
* Docker Swarm provides native
clustering functionality for Docker containers, which turns a group of Docker engines into a single virtual Docker engine.
In Docker 1.12 and higher, Swarm mode is integrated with Docker Engine.
The
docker swarm
CLI
utility allows users to run Swarm containers, create discovery tokens, list nodes in the cluster, and more.
The
docker node
CLI utility allows users to run various commands to manage nodes in a swarm, for example, listing the nodes in a swarm, updating nodes, and removing nodes from the swarm.
Docker manages swarms using the
Raft
A raft is any flat structure for support or transportation over water. It is usually of basic design, characterized by the absence of a hull. Rafts are usually kept afloat by using any combination of buoyant materials such as wood, sealed barre ...
consensus algorithm. According to Raft, for an update to be performed, the majority of Swarm nodes need to agree on the update.
In addition to the
docker swarm
CLI,
docker stack
is a tool designed to manage Swarm services with greater flexibility. It can use a configuration file very similar to a docker-compose.yml, with a few nuances. Using
docker stack
instead of
docker compose
offers several advantages, such as the ability to manage a Swarm cluster across multiple machines or the capability to work with
docker secret
combined with
docker context
, a feature that allows executing Docker commands on a remote host, enabling remote container management.
* Docker Volume facilitates the independent persistence of data, allowing data to remain even after the container is deleted or re-created.
History
dotCloud Inc. was founded by Kamel Founadi, Solomon Hykes, and Sebastien Pahl
during the
Y Combinator
Y Combinator, LLC (YC) is an American technology startup accelerator and venture capital firm launched in March 2005 which has been used to launch more than 5,000 companies. The accelerator program started in Boston and Mountain View, Californi ...
Summer 2010 startup incubator group and launched in 2011, and renamed to Docker Inc in 2013.
The startup was also one of the 12 startups in ''Founder's Den'' first cohort.
Hykes started the Docker project in France as an internal project within
dotCloud, a
platform-as-a-service company.
Docker debuted to the public in
Santa Clara at
PyCon
The Python Conference (also called PyCon) is the largestpage 10 annual convention for the discussion and promotion of the Python programming language. It originated in the United States but is also held in more than 40 other countries. It was one ...
in 2013.
It was released as
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
in March 2013.
At the time, it used
LXC as its default execution environment. One year later, with the release of version 0.9, Docker replaced LXC with its own component, ''libcontainer'', which was written in the
Go programming language.
In 2017, Docker created the for open research and development.
Adoption
* September 19, 2013:
Red Hat
Red Hat, Inc. (formerly Red Hat Software, Inc.) is an American software company that provides open source software products to enterprises and is a subsidiary of IBM. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North ...
and Docker announced a collaboration around
Fedora,
Red Hat Enterprise Linux
Red Hat Enterprise Linux (RHEL) is a commercial Linux distribution developed by Red Hat. Red Hat Enterprise Linux is released in server versions for x86-64, Power ISA, ARM64, and IBM Z and a desktop version for x86-64. Fedora Linux and ...
(RHEL), and
OpenShift.
* October 15, 2014:
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
announced the integration of the Docker engine into
Windows Server
Windows Server (formerly Windows NT Server) is a brand name for Server (computing), server-oriented releases of the Windows NT operating system (OS) that have been developed by Microsoft since 1993. The first release under this brand name i ...
, as well as native support for the Docker client role in Windows.
* November 2014: Docker container services were announced for the
Amazon Elastic Compute Cloud
Amazon Elastic Compute Cloud (EC2) is a part of Amazon's cloud-computing platform, Amazon Web Services (AWS), that allows users to rent virtual computers on which to run their own computer applications. EC2 encourages scalable deployment of ap ...
(EC2).
* November 10, 2014: Docker announced a partnership with
Stratoscale.
* December 4, 2014:
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
announced a strategic partnership with Docker that enables Docker to integrate more closely with the IBM Cloud.
* June 22, 2015: Docker and several other companies announced that they were working on a new vendor and operating-system-independent standard for software containers.
* December 2015:
Oracle Cloud
Oracle Cloud is a cloud computing service offered by Oracle Corporation providing servers, storage, network, applications and services through a global network of Oracle Corporation managed data centers. The company allows th ...
added Docker container support after acquiring
StackEngine, a Docker container startup.
* April 2016: Windocks, an
independent software vendor
An independent software vendor (ISV), also known as a software publisher, is an organization specializing in making and selling software, in contrast to computer hardware, designed for mass or niche markets. This is in contrast to in-house softwa ...
released a port of Docker's open source project to Windows, supporting Windows Server 2012 R2 and Server 2016, with all editions of SQL Server 2008 onward.
* May 2016: analysis showed the following organizations as main contributors to Docker: The Docker team,
Cisco
Cisco Systems, Inc. (using the trademark Cisco) is an American multinational digital communications technology conglomerate corporation headquartered in San Jose, California. Cisco develops, manufactures, and sells networking hardware, s ...
,
Google
Google LLC (, ) is an American multinational corporation and technology company focusing on online advertising, search engine technology, cloud computing, computer software, quantum computing, e-commerce, consumer electronics, and artificial ...
,
Huawei
Huawei Technologies Co., Ltd. ("Huawei" sometimes stylized as "HUAWEI"; ; zh, c=华为, p= ) is a Chinese multinational corporationtechnology company in Longgang, Shenzhen, Longgang, Shenzhen, Guangdong. Its main product lines include teleco ...
,
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
,
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
, and
Red Hat
Red Hat, Inc. (formerly Red Hat Software, Inc.) is an American software company that provides open source software products to enterprises and is a subsidiary of IBM. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North ...
.
* June 8, 2016: Microsoft announced that Docker could now be used natively on
Windows 10
Windows 10 is a major release of Microsoft's Windows NT operating system. The successor to Windows 8.1, it was Software release cycle#Release to manufacturing (RTM), released to manufacturing on July 15, 2015, and later to retail on July 2 ...
.
* January 2017: An analysis of
LinkedIn
LinkedIn () is an American business and employment-oriented Social networking service, social network. It was launched on May 5, 2003 by Reid Hoffman and Eric Ly. Since December 2016, LinkedIn has been a wholly owned subsidiary of Microsoft. ...
profile mentions showed Docker presence grew by 160% in 2016.
* May 6, 2019: Microsoft announced the second version of
Windows Subsystem for Linux (WSL). Docker, Inc. announced that it had started working on a version of Docker for Windows to run on WSL 2.
In particular, this meant Docker could run on Windows 10 Home (previously it was limited to Windows Pro and Enterprise since it used
Hyper-V).
* August 2020: Microsoft announced a backport of WSL2 to Windows 10 versions 1903 and 1909 (previously WSL2 was available only on version 2004)
and Docker developers announced availability of Docker for these platforms.
*August 2021: Docker Desktop for Windows and MacOS was no longer available free of charge for enterprise users. Docker ended free Docker Desktop use for larger business customers and replaced its Free Plan with a Personal Plan. Docker Engine on Linux distributions remained unaffected.
*December 2023: Docker acquired AtomicJar to expand its testing capabilities.
See also
*
DevOps
DevOps is the integration and automation of the software development and information technology operations. DevOps encompasses necessary tasks of software development and can lead to shortening development time and improving the development life ...
*
DevOps toolchain
*
gVisor
*
Kubernetes
Kubernetes (), also known as K8s is an open-source software, open-source OS-level virtualization, container orchestration (computing), orchestration system for automating software deployment, scaling, and management. Originally designed by Googl ...
*
List of Linux containers
*
Microservices
In software engineering, a microservice architecture is an architectural pattern that organizes an application into a collection of loosely coupled, fine-grained services that communicate through lightweight protocols. This pattern is characterize ...
*
OS-level virtualization
*
Podman
*
Service Component Architecture
*
Singularity – Docker alternative for HPC clusters
*
Open Container Initiative
References
External links
*
{{Linux containers
2013 software
Containerization software
Free software programmed in Go
Free virtualization software
Linux containerization
Operating system security
Operating system technology
Virtualization software for Linux
Software using the Apache license