Generated by DeepSeek V3.2| Docker (software) | |
|---|---|
| Name | Docker |
| Developer | Docker, Inc. |
| Released | 13 March 2013 |
| Programming language | Go |
| Operating system | Linux, Windows, macOS |
| Genre | OS-level virtualization |
| License | Apache License 2.0 |
| Website | https://www.docker.com |
Docker (software). Docker is a set of platform-as-a-service products that use OS-level virtualization to deliver software in packages called containers. The software that hosts the containers is called the Docker Engine. It was first released in 2013 and is developed by Docker, Inc.. Docker simplifies the process of managing application processes in containers, which are lightweight and portable execution environments.
Docker packages an application and its dependencies into a standardized unit for software development, known as a container image. This approach ensures that the application runs consistently across different computing environments, such as from a developer's local Linux machine to a test environment in Amazon Web Services. The use of containers isolates software from its environment, solving the "it works on my machine" problem. The technology builds upon earlier concepts of OS-level virtualization and leverages features of the Linux kernel, such as cgroups and namespaces.
Docker uses a client-server architecture. The Docker client communicates with the Docker daemon, which does the heavy lifting of building, running, and distributing containers. The client and daemon can run on the same system, or a client can connect to a remote daemon. They communicate using a REST API, over UNIX sockets or a network interface. The Docker daemon manages Docker objects such as images, containers, networks, and volumes. A key component is the Docker registry, such as Docker Hub, which stores Docker images.
The core components include the Docker Engine, Docker images, Docker containers, and Docker registries. A Docker image is a read-only template with instructions for creating a container, often built from a Dockerfile. A container is a runnable instance of an image. Docker Compose is a tool for defining and running multi-container applications using a YAML file. Docker Swarm provides native clustering and orchestration capabilities, turning a group of Docker engines into a single virtual engine. These components integrate with various CI/CD pipelines and platforms like Jenkins and GitLab.
Docker is widely used for microservices architecture, enabling each service to run in its own container and be deployed independently. It is fundamental to modern DevOps practices, facilitating continuous integration and continuous deployment. Developers use Docker to create consistent development environments, eliminating conflicts between different project dependencies. In production, Docker containers are deployed on orchestration platforms like Kubernetes, Amazon Elastic Container Service, and Microsoft Azure Container Instances for scalable, resilient applications.
Docker was initially an internal project within dotCloud, a platform-as-a-service company, developed by Solomon Hykes and other engineers. It was open-sourced in 2013 under the Apache License 2.0. The project quickly gained popularity within the developer community and at events like PyCon. In 2014, dotCloud renamed itself to Docker, Inc. to focus on the Docker technology. Major milestones include the donation of its container runtime, runc, to the Open Container Initiative in 2015, and the introduction of Docker Desktop for macOS and Windows.
Several other containerization technologies compete with or complement Docker. Podman is a daemonless container engine developed by Red Hat that offers a compatible command-line interface. containerd is an industry-standard core container runtime, originally spun out from Docker, now a graduated project within the Cloud Native Computing Foundation. rkt was an early alternative container runtime from CoreOS. In the broader ecosystem, Kubernetes has become the dominant container orchestration system, which can use Docker alongside other runtimes. Commercial platforms like Google Cloud Run and AWS Fargate offer managed container services.