Docker installation various depends upon the distribution you use check docker manual
Docker Engine is an open-source containerization technology for building and containerizing your applications. Docker Engine acts as a client-server application with:
- A server with a long-running daemon process
dockerd
- APIs that specify interfaces that programs can use to talk to and instruct the Docker daemon
- A command line interface (CLI) client
docker
This guide covers installing Docker Engine on Debian 11, 12, and 13 from the official repository, enabling the TCP port for external connections, and managing Docker as a non-root user.
Before installing, uninstall any conflicting packages distributed by Debian itself:
1
| for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
|
Debian 11 (Bullseye)
Add Docker Repository
1
2
3
4
5
6
7
8
9
| sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian bullseye stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
Install Docker Engine
1
2
| sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
Start and Verify
1
2
3
| sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
|
Debian 12 (Bookworm)
Add Docker Repository
1
2
3
4
5
6
7
8
9
| sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian bookworm stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
Install Docker Engine
1
2
| sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
Start and Verify
1
2
3
| sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
|
Debian 13 (Trixie)
Add Docker Repository
1
2
3
4
5
6
7
8
9
| sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian trixie stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
Install Docker Engine
1
2
| sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
Start and Verify
1
2
3
| sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
|
NOTE
If you want to keep all libraries in your home directory, create a symlink before installing:
1
| mkdir /home/.docker/ && ln -s /home/.docker/ /var/lib/docker
|
Enable TCP Port 2375
Expose the Docker daemon over TCP for remote API access.
Locate the docker service file
1
| systemctl status docker
|
Look for Loaded: — for example /lib/systemd/system/docker.service.
Edit the ExecStart line
1
| sudo nano /lib/systemd/system/docker.service
|
Change ExecStart to:
1
| ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
|
Apply changes
1
2
| sudo systemctl daemon-reload
sudo systemctl restart docker
|
Verify TCP listener
Expected output:
1
| LISTEN 0 4096 *:2375 *:* users:(("dockerd",pid=1451697,fd=3))
|
WARNING
Exposing Docker on 0.0.0.0:2375 without TLS is insecure. Use only on trusted networks.
Manage Docker as a Non-Root User
WARNING
The docker group grants root-level privileges to the user. For details, refer to Docker Daemon Attack Surface.
1
2
3
| sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
|
Log out and back in for group membership to take effect. A reboot may be necessary.
Verify:
Best Practices
- Use official repositories instead of convenience scripts
- Limit TCP access to trusted networks or use TLS
- Keep Docker Engine updated regularly
- Store Docker-related configs in Git
- Use
docker compose for multi-container apps
References