Гайд по Docker: Повне керівництво по роботі з контейнерами на VPS

Востаннє змінено 17 Вересня 2025 в
  • 12 min read
  • 15
  • 0
Spartak Itskovich

Spartak Itskovich

Game Content Writer

Docker стає все більш популярним інструментом для розгортання застосунків завдяки своїй простоті та гнучкості. На VPS (Virtual Private Server) Docker надає особливі переваги, дозволяючи легко керувати складними застосунками та оптимізувати використання ресурсів. Цей комплексний гайд охоплює три ключові аспекти роботи з Docker на VPS: початок роботи, розгортання багатоконтейнерних застосунків та оптимізацію продуктивності. Кожен розділ містить практичні поради та реальні приклади, що допоможуть вам впевнено працювати з Docker на вашому VPS сервері з Debian 12.

 

Getting Started with Docker on VPS

 

Встановлення Docker на Debian 12 VPS

 

Перш ніж починати роботу з контейнерами, потрібно правильно встановити Docker на ваш VPS з Debian 12. Процес встановлення на Debian дещо відрізняється від Ubuntu, але залишається простим.

 

Спочатку підключіться до вашого VPS через SSH:

 

ssh root@your-vps-ip

 

Оновіть систему та встановіть необхідні пакети:

 

sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y

 

Додайте офіційний GPG ключ Docker:

 

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 

Додайте репозиторій Docker для Debian 12:

 

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

Встановіть Docker та Docker Compose:

 

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

 

На Debian 12 Docker Compose встановлюється автоматично як плагін разом з основним пакетом Docker. Це означає, що ви використовуватимете команду `docker compose` (з пробілом) замість старої `docker-compose`.

 

Додайте вашого користувача до групи docker (опціонально):

 

sudo usermod -aG docker $USER

 

Перевірте, чи Docker працює правильно:

 

docker run hello-world
docker compose version

 

Запуск першого контейнера на Debian 12 VPS

 

Після встановлення Docker можна запустити ваш перший контейнер. Давайте почнемо з простого веб-сервера nginx:

 

docker run -d -p 80:80 --name my-nginx nginx:latest

 

Ця команда робить наступне:

 

  • `-d` - запускає контейнер у фоновому режимі
  • `-p 80:80` - перенаправляє трафік з порту 80 VPS на порт 80 контейнера
  • `--name my-nginx` - дає контейнеру зрозуміле ім'я
  • `nginx:latest` - використовує останній образ nginx

 

Тепер ваш веб-сервер доступний за IP-адресою вашого VPS. Відкрийте браузер та введіть IP вашого сервера - ви побачите стартову сторінку nginx.

 

Використання Docker Hub на Debian 12

 

Docker Hub - це публічний реєстр образів Docker, де можна знайти готові образи для різноманітних застосунків. Для пошуку образів використовуйте команду:

 

docker search nginx

 

Щоб завантажити образ:

 

docker pull nginx:latest

 

Переглянути всі завантажені образи на вашому Debian 12 VPS:

 

docker image ls

 

Основні команди для керування контейнерами

 

Ось найважливіші команди, які ви будете використовувати щодня на VPS з Debian 12:

 

**Перегляд контейнерів:**

 

docker ps           # Активні контейнери
docker ps -a        # Всі контейнери

 

**Керування контейнерами:**

 

docker start container-name    # Запустити
docker stop container-name     # Зупинити
docker restart container-name  # Перезапустити
docker rm container-name       # Видалити

 

**Перегляд логів та статистики:**

 

docker logs container-name     # Логи контейнера
docker stats                   # Статистика використання ресурсів

 

Як зробити контейнер доступним за IP VPS

 

Щоб ваші контейнери були доступні ззовні через IP вашого VPS з Debian 12, потрібно правильно налаштувати порти. Використовуйте прапорець `-p` для маппінгу портів:

 

docker run -d -p 8080:80 nginx    # VPS:8080 -> контейнер:80
docker run -d -p 3000:3000 my-app # VPS:3000 -> контейнер:3000

 

Для декількох портів:

 

docker run -d -p 80:80 -p 443:443 nginx

 

На Debian 12 переконайтеся, що firewall дозволяє трафік на потрібних портах:

 

sudo ufw allow 80
sudo ufw allow 443
sudo ufw status

 

Deploying Multi-Container Apps on VPS (Docker Compose)

 

 

Сучасні веб-застосунки рідко складаються з одного сервісу. Зазвичай потрібна база даних, веб-сервер, можливо кеш або черга повідомлень. Керування кожним контейнером окремо на VPS швидко стає складним завданням. Docker Compose вирішує цю проблему, дозволяючи описати всю архітектуру в одному файлі.

 

На Debian 12 Docker Compose встановлюється автоматично як плагін Docker, що означає використання команди `docker compose` замість окремої утиліти.

 

Переваги використання Docker Compose на Debian 12 VPS:

 

  • Простота розгортання всього застосунку однією командою
  • Автоматичне створення мереж між сервісами
  • Легке масштабування окремих компонентів
  • Версіонування конфігурації разом з кодом

 

Перевірка Docker Compose на Debian 12

 

Оскільки Docker Compose встановлюється разом з Docker на Debian 12, перевірте його наявність:

 

docker compose version

 

Якщо команда працює, ви готові до створення багатоконтейнерних застосунків на вашому VPS.

 

Приклад docker-compose.yml (WordPress + MySQL) на Debian 12 VPS

 

Ось практичний приклад розгортання WordPress з MySQL на VPS з Debian 12:

 

version: '3.8'

services:
  db:
    image: mysql:5.7
    container_name: wordpress-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: strong_password_123
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress_password
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - wordpress-network

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    container_name: wordpress-site
    restart: unless-stopped
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    networks:
      - wordpress-network

volumes:
  db_data:
  wordpress_data:

networks:
  wordpress-network:
    driver: bridge

 

Запуск кількох контейнерів одночасно на Debian 12 VPS

 

Збережіть конфігурацію вище у файл `docker-compose.yml` на вашому Debian 12 VPS та запустіть:

 

docker compose up -d

 

Зверніть увагу на використання `docker compose` (з пробілом) - це нова команда для Debian 12. Стара команда `docker-compose` може не працювати.

 

Ця команда:

 

  • Створить мережу між контейнерами
  • Завантажить необхідні образи
  • Запустить контейнери у правильному порядку
  • Змонтує volumes для збереження даних

 

Перевірити статус сервісів:

 

docker compose ps

 

Переглянути логи всіх сервісів:

 

docker compose logs

 

Перевірка роботи сервісів через IP VPS

 

Після запуску контейнерів на Debian 12 VPS перевірте їх роботу:

 

  1. Відкрийте браузер та введіть IP вашого VPS
  2. Має з'явитися сторінка встановлення WordPress
  3. Перевірте, чи контейнери запущені:

docker compose ps

 

  1. Перевірте логи у разі проблем:

docker compose logs wordpress
docker compose logs db

 

Масштабування контейнерів у VPS-середовищі на Debian 12

 

Docker Compose дозволяє легко масштабувати сервіси на VPS з Debian 12. Наприклад, для запуску декількох інстансів веб-застосунку:

 

docker compose up --scale web=3 -d

 

Для production-середовища на Debian 12 VPS додайте в `docker-compose.yml`:

 

services:
  web:
    image: my-app:latest
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: '0.50'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M

 

Optimizing Containers Performance on VPS

 

Як обмежити ресурси контейнерів у Debian 12 VPS (CPU, RAM)

 

Правильне обмеження ресурсів критично важливе на VPS, оскільки ресурси обмежені. Без лімітів один контейнер може спожити всі ресурси сервера.

 

**Обмеження через docker run на Debian 12:**

 

# Обмеження пам'яті до 512MB та CPU до 1 ядра
docker run -d --memory="512m" --cpus="1.0" nginx

# Обмеження swap-памяті
docker run -d --memory="512m" --memory-swap="1g" my-app

 

**Обмеження через Docker Compose на Debian 12:**

 

services:
  web:
    image: nginx
    deploy:
      resources:
        limits:
          cpus: '1.5'
          memory: 500M
        reservations:
          cpus: '0.5'
          memory: 200M

 

**Моніторинг використання ресурсів на Debian 12:**

 

docker stats    # Реальний час
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

 

Типові ресурсні лімити для Docker контейнерів на VPS

 

Оптимізація роботи з томами й кешем на Debian 12

 

Правильна робота з volume на Debian 12 VPS суттєво впливає на продуктивність:

 

**Named volumes для важливих даних:**

 

volumes:
  db_data:
    driver: local
  app_cache:
    driver: local

services:
  db:
    volumes:
      - db_data:/var/lib/mysql
  app:
    volumes:
      - app_cache:/app/cache

 

**Bind mounts для development на Debian 12 VPS:**

 

services:
  app:
    volumes:
      - ./app:/var/www/html
      - /etc/localtime:/etc/localtime:ro  # Синхронізація часу

 

**Оптимізація Dockerfile для кешування на Debian 12:**

 

FROM node:16-alpine

WORKDIR /app

# Спочатку копіюємо package.json для кешування залежностей
COPY package*.json ./
RUN npm install

# Потім копіюємо код
COPY . .

EXPOSE 3000
CMD ["npm", "start"]

 

Налаштування мережі на Debian 12 VPS для стабільної роботи

 

Правильна мережева конфігурація забезпечує стабільну роботу контейнерів на Debian 12 VPS:

 

**Створення окремих мереж для безпеки:**

 

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge
    internal: true  # Тільки для внутрішнього використання

services:
  web:
    networks:
      - frontend
      - backend
  db:
    networks:
      - backend  # База недоступна ззовні

 

**Налаштування DNS для сервісів на Debian 12:**

 

services:
  app:
    networks:
      default:
        aliases:
          - api.local

 

Моніторинг контейнерів на Debian 12 VPS

 

Ефективний моніторинг критично важливий для Debian 12 VPS. Ось кілька підходів:

 

**Вбудовані інструменти Docker:**

 

docker stats              # Статистика в реальному часі
docker system df          # Використання дискового простору
docker system events      # Події системи

 

**Prometheus + Grafana для Debian 12 VPS:**

 

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin123

 

**Netdata для простого моніторингу на Debian 12:**

 

docker run -d --name=netdata \
  -p 19999:19999 \
  -v netdataconfig:/etc/netdata \
  -v netdatalib:/var/lib/netdata \
  -v netdatacache:/var/cache/netdata \
  -v /proc:/host/proc:ro \
  -v /sys:/host/sys:ro \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --cap-add SYS_PTRACE \
  --security-opt apparmor=unconfined \
  netdata/netdata

 

Рекомендації для production-навантажень на Debian 12

 

**Health checks для автоматичного відновлення:**

 

services:
  web:
    image: nginx
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

 

**Restart policies для стабільності на Debian 12:**

 

services:
  app:
    restart: unless-stopped  # Рекомендовано для production

 

**Логування на Debian 12 VPS:**

 

services:
  app:
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

 

**Безпека в production на Debian 12:**

 

services:
  app:
    user: "1000:1000"  # Не запускайте як root
    read_only: true     # Файлова система тільки для читання
    tmpfs:
      - /tmp
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE

 

**Регулярне очищення на Debian 12 VPS:**

 

# Видалення невикористаних контейнерів, мереж, образів
docker system prune -a --volumes

# Автоматизація через cron на Debian 12
0 2 * * 0 docker system prune -f

 

**Специфічні налаштування для Debian 12:**

 

# Перевірка служби Docker
sudo systemctl status docker
sudo systemctl enable docker

# Налаштування автозапуску після перезавантаження VPS
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

 

Цей комплексний гайд охоплює всі основні аспекти роботи з Docker на VPS з Debian 12 - від початкового встановлення до складних production-розгортань. Головною відмінністю є використання вбудованого Docker Compose плагіна та команди `docker compose` замість окремої утиліти. Правильне використання цих технік допоможе вам створити надійну, масштабовану та ефективну інфраструктуру для ваших застосунків на Debian 12 VPS.

Оцініть статтю за 5-бальною шкалою

Будь першим, хто оцінить цю новину!
Найшли помилку? Виділіть її та натисніть Ctrl + Enter, щоб повідомити нас.
×

Повідомити про помилку

Текст помилки

Ваш варіант