Skip to content

Docker_installation

This chapter covers installing Docker on various operating systems. Docker can be installed on Linux, macOS, and Windows.

  • 64-bit Linux kernel 3.10 or later
  • Ubuntu, Debian, CentOS, Fedora, or RHEL
  • Root or sudo access
  • 2010 or newer Mac
  • macOS 10.15 (Catalina) or later
  • At least 4GB RAM
  • Windows 10/11 Pro, Enterprise, or Education
  • Hyper-V and Containers features enabled
  • At least 4GB RAM

Terminal window
# Update package index
sudo apt-get update
# Install dependencies
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# Add Docker's official GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Set up the Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Update package index again
sudo apt-get update
# Install Docker Engine
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Verify installation
sudo docker run hello-world
Terminal window
# Download and run the convenience script
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Add user to docker group (avoid using sudo)
sudo usermod -aG docker $USER
# Log out and log back in for group membership to take effect
Terminal window
# Start Docker service
sudo systemctl start docker
sudo systemctl enable docker
# Check Docker version
docker --version
# Check Docker Compose version
docker compose version
# View Docker system information
docker system info

Terminal window
# Install required packages
sudo dnf install -y dnf-plugins-core
# Set up the Docker repository
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Install Docker Engine
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Start and enable Docker
sudo systemctl start docker
sudo systemctl enable docker
# Verify installation
sudo docker run hello-world

Terminal window
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Docker Desktop
brew install --cask docker
# Launch Docker Desktop from Applications
open -a Docker
  1. Go to Docker Desktop for Mac
  2. Download the Apple Silicon or Intel version
  3. Double-click the .dmg file
  4. Drag Docker to Applications folder
  5. Launch Docker Desktop
Terminal window
# Check Docker version
docker --version
# Check Docker Compose version
docker compose version
# Run a test container
docker run hello-world
┌─────────────────────────────────────────────────────────────────────────────┐
│ Docker Desktop for Mac Architecture │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Docker Desktop App │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ ┌─────────────┐ │ │
│ │ │ Docker CLI │ │ Docker API │ │ UI/Config │ │ │
│ │ └────────────────┘ └────────────────┘ └─────────────┘ │ │
│ └────────────────────────────┬────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Linux VM (HyperKit) │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ Docker Daemon │ │ Containerd │ │ │
│ │ │ (dockerd) │ │ │ │ │
│ │ └────────────────┘ └────────────────┘ │ │
│ └────────────────────────────┬────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────────▼────────────────────────────────────┐ │
│ │ macOS Kernel │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

  1. Enable Hyper-V:

    • Open PowerShell as Administrator
    • Run: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
  2. Enable Containers:

    • Run: Enable-WindowsOptionalFeature -Online -FeatureName Containers -All
  3. Restart computer

  1. Download Docker Desktop for Windows from docker.com

  2. Run the installer (Docker Desktop Installer.exe)

  3. Follow the installation wizard:

    • Accept the license
    • Choose “Use WSL 2 instead of Hyper-V” (recommended)
    • Complete installation
  4. Start Docker Desktop

  5. Verify with:

Terminal window
docker --version
docker run hello-world
┌─────────────────────────────────────────────────────────────────────────────┐
│ Docker Desktop for Windows Architecture │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Docker Desktop App │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ ┌─────────────┐ │ │
│ │ │ Docker CLI │ │ Docker API │ │ UI/GUI │ │ │
│ │ └────────────────┘ └────────────────┘ └─────────────┘ │ │
│ └────────────────────────────┬────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────────▼────────────────────────────────────┐ │
│ │ WSL 2 Backend │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ Docker Engine │ │ containerd │ │ │
│ │ │ (dockerd) │ │ │ │ │
│ │ └────────────────┘ └────────────────┘ │ │
│ └────────────────────────────┬────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────────▼────────────────────────────────────┐ │
│ │ Linux Kernel (WSL2) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Windows Kernel │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

  • Complete Docker development environment
  • Includes Docker Engine, CLI, Docker Compose, Kubernetes
  • GUI for management
  • Paid for large enterprises
  • Easy to install and use
  • Just the core Docker components
  • CLI and daemon only
  • Free and open-source
  • Requires manual configuration
  • Used in production Linux servers

Docker Compose is included in Docker Desktop installations. For Linux servers:

Terminal window
# Ubuntu/Debian
sudo apt-get install docker-compose-plugin
# CentOS/RHEL/Fedora
sudo dnf install docker-compose-plugin
Terminal window
# Download the current stable release
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Apply executable permissions
sudo chmod +x /usr/local/bin/docker-compose
# Verify installation
docker-compose --version

Terminal window
# Remove Docker packages
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Remove images, containers, volumes
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Terminal window
# Using Homebrew
brew uninstall --cask docker
# Or remove manually
rm -rf ~/Library/Application\ Support/Docker
rm -rf ~/Library/Group\ Containers/group.com.docker
  1. Open Docker Desktop
  2. Go to Settings → Troubleshoot → Uninstall

Terminal window
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:6
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Terminal window
$ docker info
Client:
Context: default
Debug Mode: false
Plugins:
build: Buildx
compose: Docker Compose
Server:
Containers: 2
Images: 15
Server Version: 24.0.0
Storage Driver: overlay2

Terminal window
# Add user to docker group
sudo usermod -aG docker $USER
# Or use sudo for each command
Terminal window
# Start Docker service
sudo systemctl start docker
sudo systemctl enable docker
Terminal window
# Update WSL2
wsl --update
# List installed distributions
wsl --list --verbose

Now that Docker is installed, let’s learn about Docker Images in the next chapter.