Docker: Installation and Basic Usage

01

Docker Installation

Debian / Ubuntu (official method)

bash
# Remove previous versions if present
apt remove docker docker-engine docker.io containerd runc 2>/dev/null

# Install dependencies
apt update && apt install ca-certificates curl -y

# Add official Docker GPG key
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

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

# Install Docker
apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Enable on boot
systemctl enable docker
systemctl start docker

CentOS / AlmaLinux / Rocky Linux

bash
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
systemctl enable --now docker

Verify installation

bash
docker --version
docker run hello-world
02

Basic Docker commands

Containers

bash
# Start a container
docker run -d --name my-nginx -p 80:80 nginx

# List active containers
docker ps

# List all containers (including stopped ones)
docker ps -a

# Stop a container
docker stop my-nginx

# Start a stopped container
docker start my-nginx

# Remove a container
docker rm my-nginx

# Logs of a container
docker logs my-nginx
docker logs -f my-nginx   # follow in real time

# Access a running container
docker exec -it my-nginx bash

Images

bash
# Download an image
docker pull nginx
docker pull ubuntu:22.04

# List local images
docker images

# Remove an image
docker rmi nginx

# Search images on Docker Hub
docker search image-name
03

Docker Compose

Docker Compose allows you to manage multiple containers with a configuration file.

Example: Nginx + PHP-FPM + MySQL

Create the docker-compose.yml file:

yaml
version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./html:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  php:
    image: php:8.2-fpm
    volumes:
      - ./html:/var/www/html

  db:
    image: mariadb:10.11
    environment:
      MYSQL_ROOT_PASSWORD: secure_password
      MYSQL_DATABASE: my_db
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
bash
# Start all services
docker compose up -d

# Stop all services
docker compose down

# See logs
docker compose logs -f

# Restart a specific service
docker compose restart web

# See status
docker compose ps
04

Docker space management

Docker can use a lot of disk space over time with unused images and layers:

bash
# Space used by Docker
docker system df

# Complete cleanup (removes stopped containers, unused images, build cache)
docker system prune -a

# Remove only unused volumes
docker volume prune
05

Allow a non-root user to use Docker

bash
usermod -aG docker username
# Exit and re-login for the group to apply

Adding a user to the docker group is equivalent to giving them root access to the system. Do this only for trusted users.

DeluxHost, gegründet 2023, bietet hochwertige Hosting-Lösungen für verschiedene digitale Anforderungen. Wir bieten Shared Hosting, VPS und dedizierte Server mit erweiterter Sicherheit und globalen Rechenzentren.

© DeluxHost, Alle Rechte vorbehalten. | USt-IdNr.: IT17734661006
Alle Systeme betriebsbereit