Good

Docker команди

Шпаргалка основних команд Docker та Docker Compose для щоденної роботи з контейнерами.

💡 Конвенція
- `container_name` — ім'я або ID контейнера - `image_name` — ім'я образу (наприклад, `nginx:alpine`) - `service_name` — ім'я сервісу з `docker-compose.yml`

Встановлення

# Ubuntu/Debian — швидке встановлення
curl -fsSL https://get.docker.com | sh

# Додати користувача до групи docker (щоб працювати без sudo)
sudo usermod -aG docker $USER

# Застосувати зміни (або перезайти)
newgrp docker

# Перевірка
docker --version
docker compose version

Контейнери

Основні операції

# Запустити контейнер
docker run -d --name mycontainer nginx:alpine

# Запустити інтерактивно
docker run -it --rm ubuntu:22.04 bash

# Список запущених контейнерів
docker ps

# Всі контейнери (включно з зупиненими)
docker ps -a

# Зупинити контейнер
docker stop container_name

# Запустити зупинений контейнер
docker start container_name

# Перезапустити
docker restart container_name

# Видалити контейнер
docker rm container_name

# Примусово видалити (навіть запущений)
docker rm -f container_name

Логи та діагностика

# Логи контейнера
docker logs container_name

# Логи в реальному часі (як tail -f)
docker logs -f container_name

# Останні 100 рядків
docker logs --tail 100 container_name

# Логи з часом
docker logs -t container_name

# Виконати команду в запущеному контейнері
docker exec -it container_name bash

# Подивитись процеси в контейнері
docker top container_name

# Використання ресурсів
docker stats

# Детальна інформація про контейнер
docker inspect container_name

Корисні опції docker run

docker run \
  -d                          # Запустити у фоні (detached)
  --name myapp                # Ім'я контейнера
  --restart unless-stopped    # Автоперезапуск
  -p 8080:80                  # Порт host:container
  -v /host/path:/container/path  # Volume
  -e "ENV_VAR=value"          # Змінна оточення
  --env-file .env             # Змінні з файлу
  --network mynetwork         # Docker network
  --memory="512m"             # Ліміт RAM
  --cpus="0.5"                # Ліміт CPU
  nginx:alpine

Образи

# Список локальних образів
docker images

# Завантажити образ
docker pull nginx:alpine

# Пошук на Docker Hub
docker search nginx

# Видалити образ
docker rmi image_name

# Видалити невикористані образи
docker image prune

# Видалити ВСІ невикористані образи
docker image prune -a

# Зберегти образ у файл
docker save -o nginx.tar nginx:alpine

# Завантажити образ з файлу
docker load -i nginx.tar

Docker Compose

ℹ️ docker compose vs docker-compose
Нова версія: `docker compose` (пробіл) Стара версія: `docker-compose` (дефіс) Використовуйте нову версію — вона швидша та інтегрована в Docker.

Основні команди

# Запустити всі сервіси (з поточної директорії)
docker compose up -d

# Запустити з конкретним файлом
docker compose -f docker-compose.prod.yml up -d

# Перебудувати образи та запустити
docker compose up -d --build

# Зупинити всі сервіси
docker compose down

# Зупинити та видалити volumes
docker compose down -v

# Перезапустити конкретний сервіс
docker compose restart service_name

# Масштабувати сервіс
docker compose up -d --scale web=3

Логи

# Логи всіх сервісів
docker compose logs

# Логи в реальному часі
docker compose logs -f

# Логи конкретного сервісу
docker compose logs -f service_name

# Останні N рядків
docker compose logs --tail 50 service_name

Управління сервісами

# Статус сервісів
docker compose ps

# Виконати команду в сервісі
docker compose exec service_name bash

# Запустити одноразову команду
docker compose run --rm service_name command

# Показати конфігурацію (з resolved variables)
docker compose config

Volumes

# Список volumes
docker volume ls

# Створити volume
docker volume create myvolume

# Видалити volume
docker volume rm myvolume

# Видалити невикористані volumes
docker volume prune

# Деталі volume
docker volume inspect myvolume

Networks

# Список мереж
docker network ls

# Створити мережу
docker network create mynetwork

# Видалити мережу
docker network rm mynetwork

# Підключити контейнер до мережі
docker network connect mynetwork container_name

# Відключити контейнер від мережі
docker network disconnect mynetwork container_name

# Детальна інформація
docker network inspect mynetwork

Очистка системи

# Перевірити використання диску
docker system df

# Видалити все невикористане (контейнери, образи, volumes, networks)
docker system prune -a

# Видалити тільки зупинені контейнери
docker container prune

# Видалити тільки невикористані образи
docker image prune -a

# Видалити тільки невикористані volumes
docker volume prune

# Видалити невикористані networks
docker network prune
⚠️ Обережно з prune!
`docker system prune -a` видаляє ВСІ невикористані образи. Якщо вам потрібні локальні образи — не використовуйте `-a`.

Приклад docker-compose.yml

version: '3.8'

services:
  web:
    image: nginx:alpine
    container_name: web
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./html:/usr/share/nginx/html:ro
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    networks:
      - frontend
    restart: unless-stopped

  api:
    build:
      context: ./backend
      dockerfile: Dockerfile
    container_name: api
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
    env_file:
      - .env
    networks:
      - frontend
      - backend
    depends_on:
      - db
    restart: unless-stopped

  db:
    image: postgres:15-alpine
    container_name: db
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - backend
    restart: unless-stopped

networks:
  frontend:
  backend:

volumes:
  db_data:

Troubleshooting

Контейнер не запускається

# Перевірити логи
docker logs container_name

# Перевірити exit code
docker inspect container_name --format='{{.State.ExitCode}}'

# Запустити інтерактивно для дебагу
docker run -it --entrypoint /bin/sh image_name

Проблеми з мережею

# Перевірити IP контейнера
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name

# Перевірити доступність порту
docker exec container_name nc -zv hostname port

# DNS всередині контейнера
docker exec container_name cat /etc/resolv.conf

Проблеми з volumes

# Перевірити монтування
docker inspect container_name --format='{{json .Mounts}}' | jq

# Права на файли всередині
docker exec container_name ls -la /path/to/volume

Корисні аліаси

Додайте в ~/.bashrc або ~/.zshrc:

# Docker
alias d='docker'
alias dps='docker ps'
alias dlog='docker logs -f'
alias dexec='docker exec -it'

# Docker Compose
alias dc='docker compose'
alias dcup='docker compose up -d'
alias dcdown='docker compose down'
alias dclogs='docker compose logs -f'
alias dcrestart='docker compose restart'
alias dcbuild='docker compose up -d --build'

Пов'язані теми

Шлях: reference/docker-commands.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications