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, opgericht in 2023, biedt hoogwaardige hostingoplossingen voor diverse digitale behoeften. Wij bieden gedeelde hosting, VPS en dedicated servers met geavanceerde beveiliging en wereldwijde datacenters.

© DeluxHost, Alle rechten voorbehouden. | BTW-nummer: IT17734661006
Alle systemen operationeel