Docker
Complete guide for installing and using Docker on Debian Linux.
What is Docker?
Docker is a platform for developing, shipping, and running applications in containers. Containers package software with all dependencies, ensuring consistent behavior across different environments.
Installation on Debian
Step 1: Install Prerequisites
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
Step 2: Add Docker's Official GPG Key
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Step 3: Add Docker Repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Step 4: Install Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Step 5: Verify Installation
Check Docker status:
sudo systemctl status docker
Test Docker with hello-world:
sudo docker run hello-world
If you see "Hello from Docker!", installation was successful!
Post-Installation: Run Docker Without Sudo
Add your user to the docker group:
sudo usermod -aG docker $USER
Log out and back in for changes to take effect. Then you can run:
docker run hello-world
Basic Docker Commands
List running containers
docker ps
List all containers (including stopped)
docker ps -a
List downloaded images
docker images
Pull an image from Docker Hub
docker pull nginx
Run a container
docker run -d -p 80:80 nginx
Stop a container
docker stop <container_id>
Remove a container
docker rm <container_id>
Remove an image
docker rmi <image_name>
Docker Compose
Install Docker Compose for managing multi-container applications:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Verify installation:
docker-compose --version
Example docker-compose.yml
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
Start services:
docker-compose up -d
Common Use Cases
Run a Web Server (Nginx)
docker run -d -p 8080:80 --name my-nginx nginx
Visit http://localhost:8080 to see the default Nginx page.
Run a Database (MySQL)
docker run -d -p 3306:3306 --name my-mysql -e MYSQL_ROOT_PASSWORD=mypass mysql:5.7
Run a WordPress Site
docker run -d -p 8000:80 --name wordpress -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_PASSWORD=mypass wordpress
Maintenance
Clean up unused containers and images
docker system prune -a
View container logs
docker logs <container_id>
Execute commands in a running container
docker exec -it <container_id> /bin/bash
Additional Resources
- Docker Official Documentation
- Docker Hub - Find container images
- Docker Compose Documentation