Docker is a platform for developing, shipping, and running applications in containers. This guide covers installing Docker on different operating systems.
Install
Ubuntu and Debian
Follow these steps to install Docker on Ubuntu or Debian-based distributions:
Update the apt package index and install packages to allow apt to use a repository over HTTPS:
sudo apt-get update sudo apt-get install -y \ apt-transport-https \ 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/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Set up the repository:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Update the apt package index and install Docker:
sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Add your user to the docker group to run Docker commands without sudo:
sudo usermod -aG docker $USER
Note
Log out and back in for this change to take effect.
Verify the installation:
docker --version docker run hello-world
CentOS/RHEL
Install required packages:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Add the Docker repository:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Install Docker:
sudo yum 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
Add your user to the docker group:
sudo usermod -aG docker $USER
Verify the installation:
docker --version docker run hello-world
Troubleshooting
Common Issues
Repository does not have a Release file
If you encounter an error about missing Release files on Debian-based systems:
- Check that the correct distribution name is used in the repository URL
- See Proxmox Docker Repository Troubleshooting for a specific example
Docker daemon not running
If you get "Cannot connect to the Docker daemon" errors:
- Check if the Docker service is running:
sudo systemctl status docker
- Start the service if needed:
sudo systemctl start docker
Permission denied
If you get "permission denied" errors:
- Make sure your user is in the docker group:
groups
- If not, add it and log out/in:
sudo usermod -aG docker $USER
Next Steps
- Docker Quickstart Tutorial
- Working with Docker Containers
- Docker Compose for Multi-Container Applications
Quick Reference
Essential Docker Commands
# Container management
docker run <image> # Run a container
docker ps # List running containers
docker ps -a # List all containers
docker stop <container> # Stop a container
docker start <container> # Start a stopped container
docker restart <container> # Restart a container
docker rm <container> # Remove a container
docker exec -it <container> bash # Execute command in container
# Image management
docker images # List images
docker pull <image> # Pull image from registry
docker build -t <name> . # Build image from Dockerfile
docker rmi <image> # Remove image
docker tag <image> <new-name> # Tag an image
# System management
docker info # Display system information
docker version # Show Docker version
docker system prune # Remove unused data
docker logs <container> # View container logs
Common Docker Run Options
# Background execution
docker run -d <image>
# Port mapping
docker run -p 8080:80 <image>
# Volume mounting
docker run -v /host/path:/container/path <image>
# Environment variables
docker run -e VAR_NAME=value <image>
# Interactive terminal
docker run -it <image> /bin/bash
# Remove container on exit
docker run --rm <image>
# Set container name
docker run --name my-container <image>
# Limit resources
docker run --memory=512m --cpus=1 <image>
Docker Compose Quick Commands
# Start services
docker-compose up
# Start in background
docker-compose up -d
# Stop services
docker-compose down
# View logs
docker-compose logs
# Rebuild images
docker-compose up --build
# Scale services
docker-compose up --scale web=3