Docker overview (2024)

Table of contents

Docker is an open platform for developing, shipping, and running applications.Docker enables you to separate your applications from your infrastructure soyou can deliver software quickly. With Docker, you can manage your infrastructurein the same ways you manage your applications. By taking advantage of Docker'smethodologies for shipping, testing, and deploying code, you cansignificantly reduce the delay between writing code and running it in production.

Docker provides the ability to package and run an application in a loosely isolatedenvironment called a container. The isolation and security lets you run manycontainers simultaneously on a given host. Containers are lightweight and containeverything needed to run the application, so you don't need to rely on what'sinstalled on the host. You can share containers while you work,and be sure that everyone you share with gets the same container that works in thesame way.

Docker provides tooling and a platform to manage the lifecycle of your containers:

  • Develop your application and its supporting components using containers.
  • The container becomes the unit for distributing and testing your application.
  • When you're ready, deploy your application into your production environment,as a container or an orchestrated service. This works the same whether yourproduction environment is a local data center, a cloud provider, or a hybridof the two.

What can I use Docker for?

Fast, consistent delivery of your applications

Docker streamlines the development lifecycle by allowing developers to work instandardized environments using local containers which provide your applicationsand services. Containers are great for continuous integration and continuousdelivery (CI/CD) workflows.

Consider the following example scenario:

  • Your developers write code locally and share their work with their colleaguesusing Docker containers.
  • They use Docker to push their applications into a test environment and runautomated and manual tests.
  • When developers find bugs, they can fix them in the development environmentand redeploy them to the test environment for testing and validation.
  • When testing is complete, getting the fix to the customer is as simple aspushing the updated image to the production environment.

Responsive deployment and scaling

Docker's container-based platform allows for highly portable workloads. Dockercontainers can run on a developer's local laptop, on physical or virtualmachines in a data center, on cloud providers, or in a mixture of environments.

Docker's portability and lightweight nature also make it easy to dynamicallymanage workloads, scaling up or tearing down applications and services asbusiness needs dictate, in near real time.

Running more workloads on the same hardware

Docker is lightweight and fast. It provides a viable, cost-effective alternativeto hypervisor-based virtual machines, so you can use more of your servercapacity to achieve your business goals. Docker is perfect for high densityenvironments and for small and medium deployments where you need to do more withfewer resources.

Docker uses a client-server architecture. The Docker client talks to theDocker daemon, which does the heavy lifting of building, running, anddistributing your Docker containers. The Docker client and daemon canrun on the same system, or you can connect a Docker client to a remote Dockerdaemon. The Docker client and daemon communicate using a REST API, over UNIXsockets or a network interface. Another Docker client is Docker Compose,that lets you work with applications consisting of a set of containers.

Docker overview (1)

The Docker daemon

The Docker daemon (dockerd) listens for Docker API requests and manages Dockerobjects such as images, containers, networks, and volumes. A daemon can alsocommunicate with other daemons to manage Docker services.

The Docker client

The Docker client (docker) is the primary way that many Docker users interactwith Docker. When you use commands such as docker run, the client sends thesecommands to dockerd, which carries them out. The docker command uses theDocker API. The Docker client can communicate with more than one daemon.

Docker Desktop

Docker Desktop is an easy-to-install application for your Mac, Windows or Linux environment that enables you to build and share containerized applications and microservices. Docker Desktop includes the Docker daemon (dockerd), the Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper. For more information, see Docker Desktop.

Docker registries

A Docker registry stores Docker images. Docker Hub is a publicregistry that anyone can use, and Docker looks for images onDocker Hub by default. You can even run your own private registry.

When you use the docker pull or docker run commands, Docker pulls the required images from your configured registry. When you use the docker push command, Docker pushesyour image to your configured registry.

Docker objects

When you use Docker, you are creating and using images, containers, networks,volumes, plugins, and other objects. This section is a brief overview of someof those objects.

Images

An image is a read-only template with instructions for creating a Dockercontainer. Often, an image is based on another image, with some additionalcustomization. For example, you may build an image which is based on the ubuntuimage, but installs the Apache web server and your application, as well as theconfiguration details needed to make your application run.

You might create your own images or you might only use those created by othersand published in a registry. To build your own image, you create a Dockerfilewith a simple syntax for defining the steps needed to create the image and runit. Each instruction in a Dockerfile creates a layer in the image. When youchange the Dockerfile and rebuild the image, only those layers which havechanged are rebuilt. This is part of what makes images so lightweight, small,and fast, when compared to other virtualization technologies.

Containers

A container is a runnable instance of an image. You can create, start, stop,move, or delete a container using the Docker API or CLI. You can connect acontainer to one or more networks, attach storage to it, or even create a newimage based on its current state.

By default, a container is relatively well isolated from other containers andits host machine. You can control how isolated a container's network, storage,or other underlying subsystems are from other containers or from the hostmachine.

A container is defined by its image as well as any configuration options youprovide to it when you create or start it. When a container is removed, any changes toits state that aren't stored in persistent storage disappear.

Example docker run command

The following command runs an ubuntu container, attaches interactively to yourlocal command-line session, and runs /bin/bash.

$ docker run -i -t ubuntu /bin/bash

When you run this command, the following happens (assuming you are usingthe default registry configuration):

  1. If you don't have the ubuntu image locally, Docker pulls it from yourconfigured registry, as though you had run docker pull ubuntu manually.

  2. Docker creates a new container, as though you had run a docker container createcommand manually.

  3. Docker allocates a read-write filesystem to the container, as its finallayer. This allows a running container to create or modify files anddirectories in its local filesystem.

  4. Docker creates a network interface to connect the container to the defaultnetwork, since you didn't specify any networking options. This includesassigning an IP address to the container. By default, containers canconnect to external networks using the host machine's network connection.

  5. Docker starts the container and executes /bin/bash. Because the containeris running interactively and attached to your terminal (due to the -i and -tflags), you can provide input using your keyboard while Docker logs the output toyour terminal.

  6. When you run exit to terminate the /bin/bash command, the containerstops but isn't removed. You can start it again or remove it.

The underlying technology

Docker is written in theGo programming language and takesadvantage of several features of the Linux kernel to deliver its functionality.Docker uses a technology called namespaces to provide the isolated workspacecalled the container. When you run a container, Docker creates a set ofnamespaces for that container.

These namespaces provide a layer of isolation. Each aspect of a container runsin a separate namespace and its access is limited to that namespace.

Docker overview (2024)

FAQs

What is the full overview of Docker? ›

Docker is an open platform that enables users to develop, ship, and run applications with ease. Docker software is packaged as containers- a docker standardized unit. These containers have all the elements, such as system tools, libraries, runtime, etc required by the software.

What is Docker and why is it used? ›

Docker is a software platform that allows you to build, test, and deploy applications quickly. Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime.

What is Docker fully explained? ›

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.

What is Docker vs Kubernetes? ›

While Docker is a container runtime, Kubernetes is a platform for running and managing containers from many container runtimes. Kubernetes supports numerous container runtimes including Docker, containerd, CRI-O, and any implementation of the Kubernetes CRI (Container Runtime Interface).

What is the core concept of Docker? ›

Docker uses a client-server architecture. The Docker client talks to the Docker daemon, which does the heavy lifting of building, running, and distributing your Docker containers. The Docker client and daemon can run on the same system, or you can connect a Docker client to a remote Docker daemon.

What is Docker for dummies? ›

In simpler words, Docker is a tool that allows developers, sys-admins etc. to easily deploy their applications in a sandbox (called containers) to run on the host operating system i.e. Linux.

Why would anyone use Docker? ›

Docker is popular because it offers portability, consistency, and scalability for deploying applications in different environments. Docker containers are lightweight, isolated, and easy to deploy, making them a popular choice for modern application development and deployment. What language was used to write Docker?

What problems does Docker solve? ›

Docker allows developers to package an application and its dependencies into a container that can be run on any system that supports Docker. This ensures that the application runs consistently across different environments, eliminating the "It works on my machine" problem.

What is Docker best used for? ›

An open-source platform, Docker is used by developers to help them automate the deployment of applications inside containers. A consistent environment is provided by docker so that the software can run across multiple computing environments. It gets easier to efficiently ship, build and run applications due to docker.

Is Docker a tool or framework? ›

Docker, a subset of the Moby project, is a software framework for building, running, and managing containers on servers and the cloud.

What is a Docker image in layman terms? ›

Docker is an open source project that's used to create, run and deploy applications in containers. A Docker image contains application code, libraries, tools, dependencies and other files needed to make an application run.

What is the lifecycle of a Docker? ›

The lifecycle of a Docker container involves creation, running, stopping, and removal. Containers are created from Docker images, run as isolated instances, can be stopped or paused, and can be removed when no longer needed.

What is Docker primarily used for? ›

Purpose of Docker: Its primary focus is to automate the deployment of applications inside software containers and the automation of operating system level virtualization on Linux. It's more lightweight than standard Containers and boots up in seconds.

Can Kubernetes run without Docker? ›

Can Kubernetes Run Without Docker? The answer is both yes and no. Kubernetes, in itself, is not a complete solution. It depends on a container runtime to orchestrate; you can't manage containers without having containers in the first place.

Is Kubernetes still using Docker? ›

Although the Kubernetes project has deprecated dockershim, Docker containers still work with Kubernetes, and images produced with the docker build command still work with all CRI implementations. However, the removal of dockershim raises some potential issues for Docker users.

What are the components of Docker and its brief summary? ›

The core components of the Docker architecture include: Docker daemon: The Docker daemon (or “engine”) is the core element of the Docker architecture. It is a background process that manages, builds, and runs Docker containers. Docker client: The Docker client is the interface used to interact with the Docker daemon.

What should I know about Docker? ›

Docker: A Container Platform

It supports Linux, macOS, and Windows, as well as the major cloud platforms. Docker has tools for creating, distributing, starting, and stopping containers. The containers can share network resources with the host or run with their virtual network visible only to other containers, or both.

What is Docker in full stack? ›

Docker (source code for core Docker project) is an infrastructure management platform for running and deploying software.

Top Articles
Nestle Market Analysis and Marketing Strategy
Indiana University Jacobs School of Music - Acceptance Rate, Ranking, and Profile - collegegazette.com
Dragon Age Inquisition War Table Operations and Missions Guide
Ffxiv Shelfeye Reaver
DENVER Überwachungskamera IOC-221, IP, WLAN, außen | 580950
Directions To 401 East Chestnut Street Louisville Kentucky
What's Wrong with the Chevrolet Tahoe?
Cinepacks.store
Uc Santa Cruz Events
Moe Gangat Age
Osrs Blessed Axe
Detroit Lions 50 50
Drago Funeral Home & Cremation Services Obituaries
What is Cyber Big Game Hunting? - CrowdStrike
Elizabethtown Mesothelioma Legal Question
National Office Liquidators Llc
VMware’s Partner Connect Program: an evolution of opportunities
Prosser Dam Fish Count
Unterwegs im autonomen Freightliner Cascadia: Finger weg, jetzt fahre ich!
Recap: Noah Syndergaard earns his first L.A. win as Dodgers sweep Cardinals
Fsga Golf
Vegas7Games.com
Yisd Home Access Center
T Mobile Rival Crossword Clue
Ihub Fnma Message Board
Accuweather Minneapolis Radar
Znamy dalsze plany Magdaleny Fręch. Nie będzie nawet chwili przerwy
The Eight of Cups Tarot Card Meaning - The Ultimate Guide
Mjc Financial Aid Phone Number
The Procurement Acronyms And Abbreviations That You Need To Know Short Forms Used In Procurement
Inmate Search Disclaimer – Sheriff
Miss America Voy Board
Blue Beetle Movie Tickets and Showtimes Near Me | Regal
The Complete Guide To The Infamous "imskirby Incident"
Srg Senior Living Yardi Elearning Login
Midsouthshooters Supply
My.lifeway.come/Redeem
Nearest Ups Office To Me
Jason Brewer Leaving Fox 25
Qlima© Petroleumofen Elektronischer Laserofen SRE 9046 TC mit 4,7 KW CO2 Wächter • EUR 425,95
Bcy Testing Solution Columbia Sc
Torrid Rn Number Lookup
Despacito Justin Bieber Lyrics
Shell Gas Stations Prices
Coffee County Tag Office Douglas Ga
Embry Riddle Prescott Academic Calendar
Gas Buddy Il
Jigidi Free Jigsaw
4Chan Zelda Totk
Online TikTok Voice Generator | Accurate & Realistic
Is My Sister Toxic Quiz
Guidance | GreenStar™ 3 2630 Display
Latest Posts
Article information

Author: Barbera Armstrong

Last Updated:

Views: 5550

Rating: 4.9 / 5 (59 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Barbera Armstrong

Birthday: 1992-09-12

Address: Suite 993 99852 Daugherty Causeway, Ritchiehaven, VT 49630

Phone: +5026838435397

Job: National Engineer

Hobby: Listening to music, Board games, Photography, Ice skating, LARPing, Kite flying, Rugby

Introduction: My name is Barbera Armstrong, I am a lovely, delightful, cooperative, funny, enchanting, vivacious, tender person who loves writing and wants to share my knowledge and understanding with you.