Skip to content

Install Docker on Debian

This chapter covers how to install and configure Docker Engine on Debian.

System Requirements

Docker Engine supports the following Debian versions (64-bit):

  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)

Uninstall Old Versions

bash
sudo apt-get remove docker docker-engine docker.io containerd runc

1. Update and Install Dependencies

bash
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

2. Add Docker's Official GPG Key

bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3. Add Docker APT Repository

bash
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Install Docker Engine

bash
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. Verify Installation

bash
sudo docker run hello-world

Post-Installation Setup

Run Docker Without sudo

bash
sudo usermod -aG docker $USER
newgrp docker

Enable on Boot

bash
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Common Issues

iptables Compatibility

Debian defaults to nftables, but Docker requires iptables:

bash
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo systemctl restart docker

Uninstall Docker

bash
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Further Reading

Content is for learning and research only.