Setup Guide
Overview
Docker is a platform for developing, shipping, and running applications in containers. This guide covers installation and security setup on Debian-based systems.
Set Up Docker Repository
Configures package sources and GPG keys to ensure secure package installation from Docker's official repository.
# Update system and install required packages
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# Create directory for keys
sudo install -m 0755 -d /etc/apt/keyrings
# Add Docker's GPG key
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
# Add Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Install Docker Components
Installs core Docker components including the engine, CLI tools, and container runtime.
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Configure Docker User
Creates a dedicated Docker user and sets appropriate permissions for security.
# Create docker user
sudo useradd -r -g docker -s /bin/bash docker
sudo passwd docker
# Create home directory
sudo mkdir -p /home/docker
sudo chown docker:docker /home/docker
# Set permissions
sudo chown docker:docker /var/lib/docker
sudo chown docker:docker /var/run/docker.sock
Security Configuration
Implements basic security measures including SSH restrictions and resource limits.
# Disable SSH for docker user
sudo echo "DenyUsers docker" >> /etc/ssh/sshd_config
sudo systemctl reload ssh
Service Management
Ensures Docker starts correctly and runs reliably.
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
# Verify installation
sudo docker run hello-world
Maintenance Tasks
# Clean unused resources
docker system prune -a --volumes
# Monitor disk usage
docker system df
# View logs
journalctl -fu docker