✅ 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'
Пов'язані теми¶
- Docker основи — концепції та архітектура
- Docker Compose — детальний опис
- Docker Compose деплой — покрокова інструкція
Шлях: reference/docker-commands.md