{"id":168307,"date":"2026-02-19T16:50:00","date_gmt":"2026-02-19T15:50:00","guid":{"rendered":"https:\/\/liora.io\/en\/?p=168307"},"modified":"2026-02-19T16:50:00","modified_gmt":"2026-02-19T15:50:00","slug":"docker-definition-and-tutorial","status":"publish","type":"post","link":"https:\/\/liora.io\/en\/docker-definition-and-tutorial","title":{"rendered":"Docker: what is it and how do I use it?"},"content":{"rendered":"<p><strong>Docker is the most widely used containerization platform. Find out everything you need to know about it: what it is, what it&#8217;s for, how it works, and what training courses are available to learn how to use it.<\/strong><\/p>\n<h2>What is a container?<\/h2>\nContainers and microservices are <b>increasingly being used<\/b> for application development and deployment. This is known as cloud-native development. In this context, Docker has become a <b>massively exploited solution <\/b>in the enterprise.\n\nBefore discovering Docker, you need to understand what a container is. It&#8217;s a lightweight runtime environment and an alternative to traditional virtualization methods based on virtual machines.\n\nOne of the key practices of modern software development is to <b>isolate applications deployed<\/b> on the same host or cluster. This prevents them from interfering with each other.\n\nTo run applications, however, it is necessary to <b>exploit packages<\/b>, <b>libraries<\/b>, and <b>various software components<\/b>. Virtual machines have long been used to exploit these resources while isolating an application.\n\nThese allow applications to be separated from each other on the same system, reducing conflicts between software components and competition for resources. However, an alternative has now emerged: <b>containers<\/b>.\n\nA virtual machine is like a complete operating system, several gigabytes in size, enabling the <b>partitioning of infrastructure resources<\/b>. A container delivers only the resources required by an application.\n\nIndeed, the container shares its <b>OS kernel<\/b> with other containers. This differs from a virtual machine, which uses a hypervisor to distribute hardware resources. This reduces the footprint of applications on the infrastructure. The container contains <b>all the system components needed<\/b> to run the code, without weighing as much as a complete OS.\n\nSimilarly, a container is lighter and simpler than a virtual machine, so it can start up and shut down more quickly. It is therefore <b>more responsive and adaptable<\/b> to the fluctuating needs of application scaling.\n\nA final plus: unlike a hypervisor, a <b>container engine<\/b> doesn&#8217;t need to emulate a complete operating system. Containers, therefore, offer better performance than traditional virtual machine deployments.\n<h2>What is Docker?<\/h2>\nDocker is a container platform launched in 2013 that has greatly contributed to the <b>democratization of containerization<\/b>. It makes it easy to create containers and container-based applications. There are others, but this is the most widely used. It&#8217;s also easier to deploy and use than its competitors.\n\nIt&#8217;s open-source, secure, and cost-effective. Many individuals and companies are <b>contributing to the development <\/b>of this project. A wide ecosystem of products, services, and resources is developed by this vast community.\n\nInitially designed for <a href=\"https:\/\/liora.io\/en\/linux-the-preferred-os-for-developers\">Linux<\/a>, Docker also supports containers on Windows or Mac, thanks to a <b>Linux virtualization &#8220;layer&#8221;<\/b> between the Windows \/ macOS operating system and the Docker runtime environment. It is therefore possible to <b>run native Windows containers<\/b><img decoding=\"async\" width=\"800\" height=\"684\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2023\/05\/Docker-1024x876.jpeg\" alt=\"Docker logo\" loading=\"lazy\">\n<h2>What are the different components of Docker?<\/h2>\nThe Docker platform is based on several technologies and components. Here are the main elements.\n<h5>Docker Engine<\/h5>\nThe Docker Engine is the application to be installed on the host machine to create, run and manage Docker containers. As its name suggests, it is the engine of the Docker system.\n\nIt is this engine that groups and links the various components together. It is the <b>client-server technology<\/b> used to create and run containers, and the term Docker is often used to designate Docker Engine.&nbsp;\n\nA distinction is made between Docker Engine Enterprise and Docker Engine Community. The Docker Community Edition is the original version, offered as <b>open source free of charge<\/b>.\n\nThe Enterprise version, launched in 2017, adds management features such as cluster control and image management or vulnerability detection. It is priced at $1,500 per node per year.\n<h5>Docker Daemon<\/h5>\nThe Docker Daemon <b>processes API requests<\/b> to manage various aspects of the installation such as images, containers, or storage volumes.\n<h5>Docker Client<\/h5>\nThe Docker Client is the <b>main interface for communicating<\/b> with the Docker system. It receives commands via the command-line interface and forwards them to the Docker Daemon.\n<h5>Dockerfile<\/h5>\nEvery Docker container starts with a &#8220;Dockerfile&#8221;. This is a <b>text file written in understandable syntax<\/b>, containing the instructions for creating a Docker image.\n\nA Dockerfile specifies the operating system on which the container will be based, and the languages, environmental variables, file locations, network ports, and other components required.\n<h5>Docker images<\/h5>\nA Docker image is a read-only template used to create Docker containers. It is made up of several layers packaging all the installations, dependencies, libraries, processes and application code required for a fully operational container environment.\n\nOnce the Dockerfile has been written, the <b>&#8220;build&#8221; utility<\/b> is invoked to create an image based on this file. This image is presented as a portable file indicating which software components the container will run and how.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"\/en\/courses\/data-ai\/data-engineer\">Understand the different Docker components<\/a><\/div><\/div>\n\n<h5>Docker containers<\/h5>\nA Docker container is an instance of a Docker image running on an individual microservice or a complete application stack. When a container is launched, <b>a writable layer is added<\/b> to the image. This stores all changes made to the container during the runtime.\n<h5>Docker run<\/h5>\nDocker&#8217;s &#8220;run&#8221; utility is the command used to launch a container. Each container is an instance of an image.\n\nContainers are designed to be temporary, but can be stopped and restarted in the same state. <b>Multiple instances<\/b> of the same image can be run simultaneously.\n<h5>The Docker registry<\/h5>\nThe Docker Registry is a <b>cataloging system for hosting<\/b> and push-and-pull Docker images. You can use your local registry, or one of the many registry services hosted by third parties such as <b>Red Hat Quay<\/b>, <b>Amazon ECR<\/b>, and <b>Google Container Registry<\/b>.\n\nThe Docker Hub is the official Docker registry. It&#8217;s a SaaS directory for <b>managing and sharing containers<\/b>. Docker images from open-source projects and software vendors can be found there. You can download these images and share your own.\n\nA Docker registry <b>organizes images<\/b> in different storage directories. Each of these contains different versions of a Docker image sharing the same image name.\n<h5>The History of Docker<\/h5>\nDocker Inc was founded by Solomon Hykes, Kamel Founadi, and Sebastien Pahl during the Y Combinator Summer 2010 startup incubation group. The company was launched in 2011.\n\nIt was also <b>one of the 12 startups in the first Founder&#8217;s Den cohort<\/b>. The project was initiated by Solomon Hykes in France, as an internal company project for a platform as a service dotCloud.\n\nIn 2013, Docker was presented to the public in Santa Clara as part of PyCon. The software was <b>launched as open-source<\/b> in March 2013. At the time, LXC was used as the default runtime environment, before being replaced a year later with<b> Docker version 0.9<\/b> by its own libcontainer component written in the Go language.\n\nOver the years, Docker has forged numerous strategic partnerships with Cloud and IT giants: Red Hat in 2013, Microsoft, IBM, and Amazon Web Services in 2014, Oracle in 2015, but also Cisco, Google, and Huawei.\n\nSince 2016, Docker can be<b> used natively on Windows 10<\/b>. In the same year, an analysis by LinkedIn revealed that the number of mentions of the software on user profiles had increased by 160%.\n<h3>How does Docker work?<\/h3>\nDocker is<b> based on the Linux kernel<\/b> and kernel functions such as groups and namespaces. It is these functions that enable processes to be separated so that they can run independently.\n\nIndeed, the purpose of containers is to run several processes and applications separately. This optimizes the use of infrastructure without reducing the level of security compared with separate systems.\n\nAll container tools like Docker are associated with an <b>image-based deployment model<\/b>. This model simplifies the sharing of an application or set of services across multiple environments.\n\nDocker also <b>automates the deployment of applications<\/b> within a container environment. Thanks to these various tools, users benefit from complete access to applications and can accelerate deployment, control versions, and assign them.\n<h4>What is container orchestration?<\/h4>\nDocker makes it easy to <b>coordinate behavior<\/b> between containers and <b>connect them to create application stacks<\/b>. To simplify the process of developing and testing multi-container applications, Docker has <b>created Docker Compose<\/b>.\n\nThis is a command-line tool, similar to the Docker client, using a specifically formatted description file to <b>assemble applications from multiple containers<\/b> and run them on a single host.\n\nWhen an application is ready to be deployed on Docker, it is necessary to be able to provision, configure, extend, and monitor the containers on the microservice architecture.\n\nTo achieve this, open-source container orchestration systems such as <b>Kubernetes<\/b>, <b>Mesos<\/b>, and <b>Docker Swarm<\/b> are used. These systems provide the tools needed to manage container clusters.\n\n<iframe title=\"Kubernetes vs. Docker: It&#039;s Not an Either\/Or Question\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/2vMEQ5zs1ko?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<h4>What is Docker Desktop?<\/h4>\nDocker Desktop is Docker&#8217;s native PC application for Windows and Mac. It&#8217;s the <b>easiest way<\/b> <b>to run<\/b>, build, debug, and test Dockerized applications.\n\nIt brings together key features such as rapid test cycles, file change notifications, enterprise network support, and complete flexibility in the <b>choice of proxies<\/b> and <b>VPNs<\/b>.\n\nThe Docker Desktop application brings together developer tools, Docker App, Kubernetes, and version synchronization. It lets you create images and templates by choosing languages and tools.\n\nThe main benefits are speed, security, and flexibility. A distinction is made between the free Community edition, and the paid Enterprise edition, which adds extra features for security, management, orchestration, and administration.\n\n<b>Two different versions<\/b> of Docker Desktop are available. The Stable version has been rigorously tested and can be used to develop reliable applications. Updates are released in parallel with those of the Docker Engine.\n\nOn the other hand, the Edge version includes <b>new experimental Docker Engine features<\/b>. So there&#8217;s a risk of bugs, crashes, and other technical problems. However, this version allows you to try out the new features in advance.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"\/en\/courses\/data-ai\/data-engineer\">Become an expert with Docker Desktop<\/a><\/div><\/div>\n\n<h3>Installing a web server on a Docker container<\/h3>\nIt&#8217;s also possible to install an Apache Web Server inside a Docker container. As a reminder, <b>Apache Web Server<\/b> is an open-source tool for creating, deploying, and managing web servers.\n\nAmong its many features are an authentication mechanism, database support, server-side scripting, and <b>compatibility with multiple programming languages<\/b>.\n\nOne of Apache&#8217;s key advantages is its ability to handle large volumes of traffic with minimal configuration. It is compatible with Linux, macOS, and Windows. Companies use it for <b>virtual or shared hosting<\/b>.\n<h3>The benefits of Docker<\/h3>\nDocker offers multiple advantages, enabling the development of applications that are easy to assemble, maintain and move around. Containers enable applications to be isolated from each other and the underlying system.\n\nThey also enable portability, since applications don&#8217;t have to be tied to the host operating system. <b>Containerized applications<\/b>, for example, can be <b>easily transferred<\/b> from on-premises systems to cloud environments.\n\nWhat&#8217;s more, containerization with Docker enables application stack components to be interchanged. Finally, containers simplify orchestration and scaling.\n<h3>Who uses Docker?<\/h3>\nDocker is a tool that benefits <b>both developers<\/b> and <b>system administrators<\/b>. It is often found at the heart of DevOps processes.\n\nDevelopers can focus on their code, without having to worry about the system on which it will run. What&#8217;s more, they can save time by<b> incorporating pre-designed programs<\/b> into their applications.\n<h4>How do I learn to use Docker?<\/h4>\nDocker is increasingly used for application development. It is now essential to master this containerization platform in the enterprise.\n\nTo learn how to use it and understand all its subtleties, you can turn to a <a href=\"\/en\/courses\/data-ai\/data-engineer\">Data Engineer<\/a> or <a href=\"\/en\/courses\/data-ai\/machine-learning-engineer\">Machine Learning Engineer training course<\/a> offered by Liora.\n\nOur training courses are available for both companies and individuals and enable you to quickly acquire the skills required for <b>data engineering<\/b> or <a href=\"https:\/\/liora.io\/en\/machine-learning-what-is-it-and-why-does-it-change-the-world\">Machine Learning<\/a>, including mastery of Docker.\n\nYou can complete the Data Engineer course in <b>11 weeks in BootCamp<\/b> mode, or nine months in Continuing Education. Once you&#8217;ve completed the course, you&#8217;ll receive a <b>Sorbonne University-certified diploma<\/b>, enabling you to put Docker to work for your company.&nbsp;\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"\/en\/courses\/data-ai\/data-engineer\">Start a Data Engineer training course<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Docker is the most widely used containerization platform. Find out everything you need to know about it: what it is, what it&#8217;s for, how it works, and what training courses are available to learn how to use it. What is a container? Containers and microservices are increasingly being used for application development and deployment. This [&hellip;]<\/p>\n","protected":false},"author":74,"featured_media":207637,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2434],"class_list":["post-168307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts\/168307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/users\/74"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/comments?post=168307"}],"version-history":[{"count":2,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts\/168307\/revisions"}],"predecessor-version":[{"id":207638,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts\/168307\/revisions\/207638"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/media\/207637"}],"wp:attachment":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/media?parent=168307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/categories?post=168307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}