Before installing Docker, ensure your system meets the minimum requirements:
Visit: https://www.docker.com/products/docker-desktop
Download: Docker Desktop for Windows
# Verify installation
docker --version
docker run hello-world
wsl --install
wsl --set-default-version 2
# Update package list
sudo apt update
# Install prerequisites
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
# Add Docker's official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Add Docker repository
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
# Start Docker service
sudo service docker start
# Add user to docker group
sudo usermod -aG docker $USER
For Windows 10 Home, you need to:
Visit: https://www.docker.com/products/docker-desktop
Download: Docker Desktop for Mac (Intel chip)
# Mount the DMG file
# Drag Docker.app to Applications folder
# Launch Docker from Applications
docker --version
docker run hello-world
Download: Docker Desktop for Mac (Apple chip)
# Same installation process
# Rosetta 2 may be required for x86 images
# Install Rosetta 2 if needed
/usr/sbin/softwareupdate --install-rosetta
# Remove old versions
sudo apt-get remove docker docker-engine docker.io containerd runc
# Update package index
sudo apt-get update
# Install prerequisites
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# Add Docker's official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Set up stable repository
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# Start and enable Docker
sudo systemctl start docker
sudo systemctl enable docker
# Add user to docker group
sudo usermod -aG docker $USER
# Verify installation
docker --version
sudo docker run hello-world
# Remove old versions
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# Install yum-utils
sudo yum install -y yum-utils
# Add Docker repository
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# Install Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io
# Start Docker
sudo systemctl start docker
sudo systemctl enable docker
# Add user to docker group
sudo usermod -aG docker $USER
# Verify installation
docker --version
sudo docker run hello-world
# Update system
sudo pacman -Syu
# Install Docker
sudo pacman -S docker
# Start and enable Docker
sudo systemctl start docker.service
sudo systemctl enable docker.service
# Add user to docker group
sudo usermod -aG docker $USER
# Verify installation
docker --version
sudo docker run hello-world
Linux (systemd):
sudo systemctl enable docker
Windows/macOS: Docker Desktop starts automatically by default.
# Add current user to docker group
sudo usermod -aG docker $USER
# Log out and log back in, or run:
newgrp docker
# Test without sudo
docker run hello-world
Create /etc/docker/daemon.json
:
{
"data-root": "/var/lib/docker",
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"default-address-pools": [
{
"base": "172.17.0.0/16",
"size": 24
}
]
}
Then restart Docker:
sudo systemctl restart docker
# Check Docker version
docker --version
docker version
# Check Docker info
docker info
# Run test container
docker run hello-world
# List images
docker images
# List containers
docker ps -a
# Check system resources
docker system info
docker system df
# Monitor Docker events
docker events
# Solution: Add user to docker group
sudo usermod -aG docker $USER
# Then log out and log back in
# Start Docker service
sudo systemctl start docker
# Check status
sudo systemctl status docker
# Ensure WSL 2 is installed and set as default
wsl --list --verbose
wsl --set-default-version 2
# Update WSL
wsl --update
graph TD
A[Choose Operating System] --> B{Windows?}
B -->|Yes| C[Windows 10/11 Pro?]
B -->|No| D{macOS?}
B -->|No| E{Linux?}
C -->|Yes| F[Docker Desktop]
C -->|No| G[WSL 2 + Docker]
D -->|Yes| H{Intel or Apple Silicon?}
H -->|Intel| I[Docker Desktop Intel]
H -->|Apple Silicon| J[Docker Desktop Apple]
E -->|Yes| K{Distribution?}
K -->|Ubuntu/Debian| L[APT Installation]
K -->|CentOS/RHEL| M[YUM Installation]
K -->|Arch| N[Pacman Installation]
F --> O[Verify Installation]
G --> O
I --> O
J --> O
L --> O
M --> O
N --> O
O --> P[Configure Post-Install]
P --> Q[Ready to Use Docker]
After successful installation:
OS | Method | Difficulty | Notes |
---|---|---|---|
Windows Pro/Enterprise | Docker Desktop | Easy | Hyper-V required |
Windows Home | WSL 2 + Docker | Medium | Requires WSL 2 setup |
macOS | Docker Desktop | Easy | Different for Intel/Apple Silicon |
Ubuntu/Debian | APT Package Manager | Easy | Most straightforward |
CentOS/RHEL | YUM Package Manager | Easy | Enterprise-friendly |
Arch Linux | Pacman | Medium | Rolling release considerations |
Choose the installation method that best fits your operating system and requirements. Docker Desktop provides the easiest experience for Windows and macOS users, while Linux users have more flexibility with native Docker Engine installation.