* [Topics](/en/topics "Topics")
* [Open source](/en/topics/open-source "Open source")
* What is Docker?
What is Docker?
===============
Published  January 9, 2018•*4*-minute read
Copy URL
Jump to section
---------------
OverviewHow does it work?Docker vs. Linux containersAdvantages of DockerLimitations?
Overview
--------
The word "Docker" refers to several things, including an open source community project; tools from the open source project; Docker Inc., the company that primarily supports that project; and the tools that company formally supports. The fact that the technologies and the company share the same name can be confusing.
Here's a brief explainer:
* The IT software "Docker” is containerization technology that enables the creation and use of [Linux® containers](/en/topics/containers-v1-old).
* The [open source Docker community](https://forums.docker.com/) works to improve these technologies to benefit all users.
* The company, [Docker Inc.](https://www.docker.com/), builds on the work of the Docker community, makes it more secure, and shares those advancements back to the greater community. It then supports the improved and hardened technologies for enterprise customers.
With Docker, you can treat containers like extremely lightweight, modular virtual machines. And you get flexibility with those containers&mdash;you can create, deploy, copy, and move them from environment to environment, which helps [optimize your apps for the cloud](/en/topics/cloud-native-apps).
[Try it](https://developers.redhat.com/products/cdk/hello-world?extIdCarryOver=true&intcmp=701f2000001OMH6AAO&sc_cid=7013a000002DgDhAAK)    [Start managing Docker containers](https://developers.redhat.com/cheat-sheets/containers)
How does Docker work?
---------------------
The Docker technology uses the [Linux kernel](/en/topics/linux/what-is-the-linux-kernel) and features of the kernel, like [Cgroups](/en/blog/world-domination-cgroups-rhel-8-welcome-cgroups-v2) and [namespaces](https://lwn.net/Articles/528078/), to segregate processes so they can run independently. This independence is the intention of containers—the ability to run multiple processes and apps separately from one another to make better use of your infrastructure while [retaining the security](/en/topics/security) you would have with separate systems.
Container tools, including Docker, provide an image-based deployment model. This makes it easy to share an application, or set of services, with all of their dependencies across multiple environments. Docker also automates deploying the application (or combined sets of processes that make up an app) inside this container environment.
These tools built on top of Linux containers—what makes Docker user-friendly and unique—gives users unprecedented access to apps, the ability to rapidly deploy, and control over versions and version distribution.
[OK, but what are Linux containers?](/en/topics/containers/whats-a-linux-container)
Red Hat resources
-----------------
[Read the report](/en/resources "Read the report")
Docker vs. Linux containers: Is there a difference?
---------------------------------------------------
This video can't play due to privacy settings
To change your settings, select the "Cookie Preferences" link in the footer and opt in to "Advertising Cookies or try disabling adblockers."
Although sometimes confused, Docker is not the same as a traditional Linux container. Docker technology was initially built on top of the [LXC](https://linuxcontainers.org/) technology—which most people associate with "traditional" Linux containers—though it’s since moved away from that dependency. LXC was useful as lightweight [virtualization](/en/topics/virtualization), but it didn’t have a great developer or user experience. The Docker technology brings more than the ability to run containers—it also eases the process of creating and building containers, shipping images, and versioning of images, among other things.
[![](/rhdc/managed-files/styles/wysiwyg_full_width/private/traditional-linux-containers-vs-docker_0.png.webp?itok=5BREfwrN)](/rhdc/managed-files/traditional-linux-containers-vs-docker_0.png)
Traditional Linux containers use an init system that can manage multiple processes. This means entire applications can run as one. The Docker technology encourages applications to be broken down into their separate processes and provides the tools to do that. This granular approach has its advantages.
Advantages of Docker containers
-------------------------------
#### Modularity
The Docker approach to containerization focuses on the ability to take down a part of an application to update or repair, without having to take down the whole app. In addition to this microservices-based approach, you can share processes among multiple apps in much the same way [service-oriented architecture](https://en.wikipedia.org/wiki/Service-oriented_architecture) (SOA) does.
#### Layers and image version control
Each Docker image file is made up of a series of layers that are combined into a single image. A layer is created when the image changes. Every time a user specifies a command, such as *run* or *copy*, a new layer gets created.
Docker reuses these layers to build new containers, which accelerates the building process. Intermediate changes are shared among images, further improving speed, [size](http://developers.redhat.com/blog/2016/03/09/more-about-docker-images-size/), and efficiency. Also inherent to layering is version control: Every time there’s a new change, you essentially have a built-in changelog, providing you with full control over your container images.
#### Rollback
Perhaps the best part about layering is the ability to roll back. Every image has layers. Don’t like the current iteration of an image? Roll it back to the previous version. This supports an agile development approach and helps make [continuous integration and deployment (CI/CD)](/en/topics/devops/what-is-ci-cd) a reality from a tools perspective.
#### Rapid deployment
Getting new hardware up, running, provisioned, and available used to take days, and the level of effort and overhead was burdensome. Docker-based containers can reduce deployment to seconds. By creating a container for each process, you can quickly share those processes with new apps. And, since an operating system doesn’t need to boot to add or move a container, deployment times are substantially shorter. Paired with shorter deployment times, you can easily and cost-effectively create and destroy data created by your containers without concern.
So, Docker technology is a more granular, controllable, microservices-based approach that places greater value on efficiency.
Are there limitations to using Docker?
--------------------------------------
Docker, by itself, can manage single containers. When you start using more and more containers and containerized apps, broken down into hundreds of pieces, management and orchestration can get difficult. Eventually, you need to take a step back and group containers to deliver services—networking, security, telemetry, and more—across all of your containers. That's where Kubernetes comes in.
[Learn more about container orchestration with Kubernetes](/en/topics/containers/what-is-kubernetes)
With Docker, you don’t get the same UNIX-like functionality that you get with traditional Linux containers. This includes being able to use processes like cron or syslog within the container, alongside your app. There are also limitations on things like cleaning up grandchild processes after you terminate child processes—something traditional Linux containers inherently handle. These concerns can be mitigated by modifying the configuration file and setting up these abilities from the start–but that may not be obvious at a first glance.
On top of this, there are other [Linux](/en/topics/linux) subsystems and devices that aren’t namespaced. These include [SELinux](https://en.wikipedia.org/wiki/Security-Enhanced_Linux), Cgroups, and /dev/sd\* devices. This means that if an attacker gains control over these subsystems, the host is compromised. In order to stay lightweight, the sharing of the host kernel with [containers opens this possibility of a security vulnerability](/en/topics/security/container-security). This differs from virtual machines, which are much more tightly segregated from the host system.
[Are Docker containers really secure?](https://opensource.com/business/14/7/docker-security-selinux)
The [Docker daemon](https://docs.docker.com/engine/reference/commandline/dockerd/) can also be a security concern. To use and run Docker containers, you’ll most likely be using the Docker daemon, a persistent runtime for containers. Docker daemon requires root privileges, so special care must be taken regarding who gets access to this process and where the process resides. For example, a local daemon has a smaller attack surface than one that lives in a more public location, such as a web server.
[Bringing new security features to Docker](https://opensource.com/business/14/9/security-for-docker)
Red Hat named a Leader in 2025 Gartner® Magic Quadrant™ for Container Management
--------------------------------------------------------------------------------
Read the 2025 Gartner® Magic Quadrant™ for Container Management to learn why Red Hat OpenShift has been named a “Leader” for the 3rd year in a row.
[Keep reading](/en/engage/gartner-magic-quadrant-container-management-analyst-report "Red Hat named a Leader in 2025 Gartner® Magic Quadrant™ for Container Management")
All Red Hat product trials
--------------------------
Our no-cost product trials help you gain hands-on experience, prepare for a certification, or assess if a product is right for your organization.
[Keep reading](/en/products/trials "All Red Hat product trials")
Keep reading
------------
### What is Istio?
Find out more about Istio, an open source service mesh that controls how microservices share data with one another.
[Read the article](/en/topics/microservices/what-is-istio "article | What is Istio?")
### What is CentOS Stream?
CentOS Stream is a Linux® development platform where open source community members can contribute to Red Hat® Enterprise Linux in tandem with Red Hat developers.
[Read the article](/en/topics/linux/what-is-centos-stream "product article | what is centos stream")
### What is KVM?
Kernel-based virtual machines (KVM) are an open source virtualization technology that turns Linux into a hypervisor.
[Read the article](/en/topics/virtualization/what-is-KVM "article | what is KVM?")
Open source resources
---------------------
### Related content
* Blog post
  [Red Hat Named a Leader in 2025 Gartner® Magic Quadrant™ for Container Management for the Third Consecutive Year](/en/blog/red-hat-named-leader-2025-container-management)
* Blog post
  [Getting to know Navtez Singh Bal, Vice President & General Manager, India and South Asia](/en/blog/getting-know-navtez-singh-bal-vice-president-general-manager-india-and-south-asia)
* Blog post
  [Zero trust starts here: Validated patterns for confidential container deployment](/en/blog/validated-patterns-confidential-container-deployment)
* Blog post
  [Deploy sensitive workloads with OpenShift confidential containers](/en/blog/deploy-sensitive-workloads-with-openshift-confidential-containers)
### Related articles
* [What is a Linux container?](/en/topics/containers/whats-a-linux-container)
* [What is container orchestration?](/en/topics/containers/what-is-container-orchestration)
* [What is Istio?](/en/topics/microservices/what-is-istio)
* [What is CentOS Stream?](/en/topics/linux/what-is-centos-stream)
* [Stateful vs stateless applications](/en/topics/cloud-native-apps/stateful-vs-stateless)
* [What is Kubernetes?](/en/topics/containers/what-is-kubernetes)
* [Red Hat OpenShift on VMware](/en/technologies/cloud-computing/openshift/vmware)
* [What is KVM?](/en/topics/virtualization/what-is-KVM)
* [What is KubeVirt?](/en/topics/virtualization/what-is-kubevirt)
* [Why use Red Hat Ansible Automation Platform with Red Hat OpenShift?](/en/technologies/cloud-computing/openshift/ansible-on-openshift)
* [What is Podman Desktop?](/en/topics/containers/what-is-podman-desktop)
* [What are CentOS replacements?](/en/topics/linux/centos-alternatives)
* [What is CentOS?](/en/topics/linux/what-is-centos)
* [What is Podman?](/en/topics/containers/what-is-podman)
* [What are hosted control planes?](/en/topics/containers/what-are-hosted-control-planes)
* [What is the Kubernetes Java client?](/en/topics/cloud-computing/what-is-kubernetes-java-client)
* [What is kubernetes security?](/en/topics/containers/kubernetes-security)
* [What is Helm?](/en/topics/devops/what-is-helm)
* [What is InstructLab?](/en/topics/ai/what-is-instructlab)
* [What is Argo CD?](/en/topics/devops/what-is-argocd)
* [Red Hat OpenShift for developers](/en/technologies/cloud-computing/openshift/developers)
* [Containers vs VMs](/en/topics/containers/containers-vs-vms)
* [What is MicroShift?](/en/topics/edge-computing/microshift)
* [Edge computing with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/edge-computing)
* [How Kubernetes can help AI/ML](/en/topics/cloud-computing/how-kubernetes-can-help-ai)
* [OpenJDK versus Oracle JDK](/en/topics/application-modernization/openjdk-vs-oracle-jdk)
* [What is Cloud Foundry?](/en/topics/application-modernization/what-is-cloud-foundry)
* [What is Kubeflow?](/en/topics/cloud-computing/what-is-kubeflow)
* [What are microservices?](/en/topics/microservices/what-are-microservices)
* [What is container security?](/en/topics/security/container-security)
* [OpenShift vs. OpenStack: What are the differences?](/en/technologies/cloud-computing/openshift/openshift-vs-openstack)
* [what is Buildah?](/en/topics/containers/what-is-buildah)
* [What are sandboxed containers](/en/topics/containers/sandboxed-containers)
* [Kubernetes vs OpenStack](/en/topics/openstack/kubernetes-vs-openstack)
* [What are validated patterns?](/en/topics/cloud-computing/what-are-validated-patterns)
* [Understanding Ansible, Terraform, Puppet, Chef, and Salt](/en/topics/automation/understanding-ansible-vs-terraform-puppet-chef-and-salt)
* [Ansible vs. Chef: What you need to know](/en/topics/automation/ansible-vs-chef)
* [Ansible vs. Salt: What you need to know](/en/topics/automation/ansible-vs-salt)
* [Kubernetes on AWS: Self-Managed vs. Managed Applications Platforms](/en/topics/containers/kubernetes-on-aws)
* [What's the best Linux distro for you?](/en/topics/linux/whats-the-best-linux-distro-for-you)
* [What is Linux?](/en/topics/linux/what-is-linux)
* [What is an image builder?](/en/topics/linux/what-is-an-image-builder)
* [Ansible vs. Puppet: What you need to know](/en/topics/automation/ansible-vs-puppet)
* [Red Hat OpenShift vs. OKD](/en/topics/containers/red-hat-openshift-okd)
* [Red Hat OpenShift vs. Kubernetes: What's the difference?](/en/technologies/cloud-computing/openshift/red-hat-openshift-kubernetes)
* [Spring on Kubernetes with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/spring)
* [Why run Apache Kafka on Kubernetes?](/en/topics/integration/why-run-apache-kafka-on-kubernetes)
* [What is Apache Kafka?](/en/topics/integration/what-is-apache-kafka)
* [What is high availability and disaster recovery for containers?](/en/topics/containers/high-availability-containers)
* [Ansible vs. Terraform, clarified](/en/topics/automation/ansible-vs-terraform)
* [What is a golden image?](/en/topics/linux/what-is-a-golden-image)
* [Ansible vs. Red Hat Ansible Automation Platform](/en/technologies/management/ansible/ansible-vs-red-hat-ansible-automation-platform)
* [What are Red Hat OpenShift cloud services?](/en/technologies/cloud-computing/openshift/what-are-red-hat-openshift-cloud-services)
* [VNF and CNF, what’s the difference?](/en/topics/cloud-native-apps/vnf-and-cnf-whats-the-difference)
* [What is a container registry?](/en/topics/cloud-native-apps/what-is-a-container-registry)
* [What is Skopeo?](/en/topics/containers/what-is-skopeo)
* [What are Red Hat OpenShift Operators?](/en/technologies/cloud-computing/openshift/what-are-openshift-operators)
* [Using Helm with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/helm)
* [Kubernetes security best practices](/en/topics/containers/kubernetes-security-best-practices)
* [What is Grafana?](/en/topics/data-services/what-is-grafana)
* [Orchestrating Windows containers on Red Hat OpenShift](/en/technologies/cloud-computing/openshift/windows-containers-on-red-hat-openshift)
* [What is open source software?](/en/topics/open-source/what-is-open-source-software)
* [What is a Kubernetes operator?](/en/topics/containers/what-is-a-kubernetes-operator)
* [Open source vs. proprietary software in vehicles](/en/topics/open-source/open-source-vs-proprietary-software-in-vehicles)
* [High performance computing with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/high-performance-computing)
* [Advantages of Kubernetes-native security](/en/topics/containers/advantages-of-kubernetes-native-security)
* [What is KubeLinter?](/en/topics/containers/what-is-kubelinter)
* [Intro to Kubernetes security](/en/topics/containers/intro-kubernetes-security)
* [Container and Kubernetes compliance considerations](/en/topics/containers/compliance)
* [How microservices support IT integration in healthcare](/en/topics/microservices/microservices-in-healthcare)
* [Kubernetes cluster management](/en/technologies/cloud-computing/openshift/kubernetes-cluster-management)
* [Red Hat OpenShift on IBM IT infrastructure](/en/technologies/cloud-computing/openshift/what-is-red-hat-openshift-on-IBM-IT-infrastructure)
* [Red Hat OpenShift for business leaders](/en/technologies/cloud-computing/openshift/business-leaders)
* [How to deploy Red Hat OpenShift](/en/technologies/cloud-computing/openshift/deploy-red-hat-openshift)
* [Cost management for Kubernetes on Red Hat OpenShift](/en/technologies/cloud-computing/openshift/cost-management)
* [What is enterprise Kubernetes?](/en/topics/containers/what-is-enterprise-kubernetes)
* [What is RKT?](/en/topics/containers/what-is-rkt)
* [What makes Red Hat OpenShift the right choice for IT operations?](/en/technologies/cloud-computing/openshift/it-operations)
* [Why choose Red Hat for Kubernetes?](/en/topics/containers/why-choose-red-hat-kubernetes)
* [What makes Red Hat OpenShift the right choice for SAP?](/en/technologies/cloud-computing/openshift/sap)
* [Kubernetes-native Java development with Quarkus](/en/technologies/cloud-computing/openshift/quarkus)
* [What is Kubernetes role-based access control (RBAC)](/en/topics/containers/what-kubernetes-role-based-access-control-rbac)
* [What is Kogito?](/en/topics/automation/what-is-kogito)
* [What is containerization?](/en/topics/cloud-native-apps/what-is-containerization)
* [What was CoreOS and CoreOS container Linux](/en/technologies/cloud-computing/openshift/what-was-coreos)
* [Learning Kubernetes basics](/en/topics/containers/learning-kubernetes-tutorial)
* [What is service-oriented architecture?](/en/topics/cloud-native-apps/what-is-service-oriented-architecture)
* [What is the Kubernetes API?](/en/topics/containers/what-is-the-kubernetes-api)
* [What is Kubernetes cluster management?](/en/topics/containers/what-is-kubernetes-cluster-management)
* [What is a Kubernetes deployment?](/en/topics/containers/what-is-kubernetes-deployment)
* [Why choose the Red Hat build of Quarkus?](/en/topics/cloud-native-apps/why-choose-red-hat-quarkus)
* [Introduction to Kubernetes architecture](/en/topics/containers/kubernetes-architecture)
* [What is CaaS?](/en/topics/cloud-computing/what-is-caas)
* [Introduction to Kubernetes patterns](/en/topics/cloud-native-apps/introduction-to-kubernetes-patterns)
* [What is a Kubernetes cluster?](/en/topics/containers/what-is-a-kubernetes-cluster)
* [What is Quarkus?](/en/topics/cloud-native-apps/what-is-quarkus)
* [What is Jaeger?](/en/topics/microservices/what-is-jaeger)
* [What is open source?](/en/topics/open-source/what-is-open-source)
* [What is container-native virtualization?](/en/topics/containers/what-is-container-native-virtualization)
* [What is Clair?](/en/topics/containers/what-is-clair)
* [What is Knative?](/en/topics/microservices/what-is-knative)
* [What is etcd?](/en/topics/containers/what-is-etcd)
* [Why choose Red Hat for microservices?](/en/topics/microservices/why-choose-red-hat-microservices)
* [Why choose Red Hat for containers?](/en/topics/containers/why-choose-red-hat-containers)
* [What is a Kubernetes pod?](/en/topics/containers/what-is-kubernetes-pod)
[More about this topic](/en/topics/open-source "More about this topic")