This comprehensive guide covers Docker installation on Windows, macOS, and Linux distributions (Ubuntu/Debian and CentOS/RHEL).
- Windows: Windows 10/11 64-bit with Pro, Enterprise, or Education editions
- macOS: macOS 10.15 or newer
- Linux: 64-bit system with kernel 3.10 or higher
- System Requirements: Minimum 4GB RAM, 20GB free disk space
- Internet Connection: Required for downloading Docker images
- Go to Docker Desktop for Windows and download the installer.
- Double-click the downloaded installer file to start the installation.
- Follow the installation prompts:
- Ensure that "Use WSL 2 instead of Hyper-V" is selected for better performance.
- Check "Add shortcut to desktop" if desired.
- Click Finish when the installation completes.
- Restart your system if prompted.
-
Open PowerShell or Command Prompt and run:
docker --version docker compose version
-
To ensure everything works, run a test container:
docker run hello-world
-
Open PowerShell as Administrator and run:
wsl --install wsl --set-default-version 2
-
Restart your computer and install a Linux distribution from the Microsoft Store (Ubuntu recommended).
- Download from the Docker Desktop for Mac page.
- Open the
.dmgfile and drag Docker.app to the Applications folder. - Start Docker from Applications or Spotlight search.
- Docker should appear in the menu bar; wait for it to initialize (whale icon stops animating).
- Accept the Docker Desktop license agreement.
-
Open Terminal and run:
docker --version docker compose version
-
Test Docker with the following command:
docker run hello-world
sudo apt-get update
sudo apt-get upgrade -ysudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release \
apt-transport-httpssudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpgecho \
"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/nullsudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo docker --version
sudo docker run hello-worldsudo yum update -ysudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo systemctl start docker
sudo systemctl enable dockersudo docker --version
sudo docker run hello-worldsudo dnf update -ysudo dnf -y install dnf-plugins-coresudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.reposudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo systemctl start docker
sudo systemctl enable dockersudo docker --version
sudo docker run hello-worldBy default, Docker requires sudo privileges. To run Docker as a non-root user:
sudo groupadd dockersudo usermod -aG docker $USERLog out and log back in so that your group membership is re-evaluated.
docker run hello-worldsudo systemctl enable docker
sudo systemctl start dockerYou can adjust Docker's behavior by modifying the daemon configuration file:
sudo nano /etc/docker/daemon.jsonExample configuration:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2",
"registry-mirrors": [
"https://mirror.gcr.io"
],
"insecure-registries": [],
"live-restore": true
}After making changes, restart Docker:
sudo systemctl restart docker# Check Docker version
docker --version
# Check Docker system information
docker info
# Test Docker with hello-world
docker run hello-world
# Check running containers
docker ps
# Check Docker images
docker images# Run a container
docker run -d -p 80:80 --name my-nginx nginx
# List running containers
docker ps
# List all containers (including stopped)
docker ps -a
# Stop a container
docker stop <container_id>
# Start a stopped container
docker start <container_id>
# Remove a container
docker rm <container_id>
# Remove all stopped containers
docker container prune# Pull an image
docker pull nginx:latest
# List images
docker images
# Build an image from Dockerfile
docker build -t myapp:1.0 .
# Remove an image
docker rmi <image_id>
# Remove unused images
docker image prune -a# View container logs
docker logs <container_id>
# Follow logs in real-time
docker logs -f <container_id>
# Execute command in running container
docker exec -it <container_id> /bin/bash
# Inspect container details
docker inspect <container_id># Check Docker disk usage
docker system df
# Remove unused data (containers, networks, images, build cache)
docker system prune -a
# View Docker system information
docker infoProblem: Cannot run Docker without sudo
Solution:
sudo usermod -aG docker $USER
newgrp dockerProblem: "Cannot connect to the Docker daemon"
Solution:
sudo systemctl start docker
sudo systemctl status dockerProblem: Docker Desktop fails to start on WSL 2
Solution:
- Update WSL 2 kernel
- Run in PowerShell as Administrator:
wsl --update wsl --shutdown
Problem: Container fails to start due to port conflict
Solution:
# Find process using the port
sudo lsof -i :80
# Or use a different port
docker run -d -p 8080:80 nginxProblem: Docker uses too much disk space
Solution:
# Clean up unused resources
docker system prune -a --volumes
# Check disk usage
docker system dfProblem: Container has no network connectivity
Solution:
# Restart Docker daemon
sudo systemctl restart docker
# Check DNS configuration in daemon.json
sudo nano /etc/docker/daemon.json
# Add: {"dns": ["8.8.8.8", "8.8.4.4"]}
sudo systemctl restart docker- Go to Settings > Apps > Apps & features
- Find Docker Desktop and click Uninstall
- Delete the Docker data directories (optional):
C:\ProgramData\DockerC:\Users\<your-user>\AppData\Roaming\Docker
- Quit Docker Desktop from the menu bar
- Move Docker.app from Applications to Trash
- Remove Docker data directories (optional):
rm -rf ~/Library/Containers/com.docker.docker rm -rf ~/Library/Application\ Support/Docker\ Desktop
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get autoremove -y
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/dockersudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/dockerNote
Join Our Telegram Community // Follow me for more DevOps & Cloud content.

