HELPER VPS

Встановлення Docker на VPS: Ubuntu, Debian, AlmaLinux і Compose

Під час встановлення з офіційного репозиторію Docker ви отримуєте свіжі Docker Engine і плагін Compose, а подальші оновлення надходять разом зі звичайним оновленням системи. Нижче по черзі зібрано команди для кожної ОС і налаштування, які варто зробити після встановлення.

Найшвидший спосіб: створити сервер з образу Docker

Якщо ви створюєте новий сервер, найшвидше обрати Docker у списку образів. Сервер запускається на Ubuntu 24.04 LTS з уже встановленими Docker Engine і Docker Compose, і одразу після входу можна виконати docker compose up. Опис застосунку й рекомендований розмір є на сторінці Docker VPS.

Якщо ви хочете додати Docker на вже робочий сервер або використовувати іншу ОС, наприклад Debian чи AlmaLinux, встановіть його вручну за кроками нижче. Усі команди розраховано на підключення під root. Якщо ви ввійшли звичайним користувачем, додавайте перед командами sudo.

Що перевірити перед встановленням

Docker працює на серверах будь-якого розміру. Для особистих проєктів із кількома контейнерами вистачить найменшого загального плану на 12 ГБ; для запуску бази даних, вебсервера та кешу разом краще мати 24 ГБ або більше. Якщо ви часто завантажуєте та збираєте образи, NVMe VPS зі швидким диском помітно пришвидшить роботу.

Якщо в системі є старі пакети Docker з репозиторію ОС, спершу видаліть їх, щоб вони не змішувалися з офіційними. Невстановлені пакети просто пропускаються, тож команду можна виконати як є.

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

Встановлення Docker на Ubuntu 24.04

Крок 1. Додайте ключ і адресу репозиторію

Ubuntu 24.04
apt update
apt install -y ca-certificates curl
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
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" > /etc/apt/sources.list.d/docker.list

Крок 2. Встановіть Docker Engine і Compose

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

Після встановлення служба Docker запускається автоматично й стартує разом із сервером після перезавантаження. Ті самі команди працюють і в Ubuntu 22.04 і 26.04. Назва версії в адресі репозиторію автоматично береться з /etc/os-release.

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

У Debian порядок той самий, що в Ubuntu, змінюється лише адреса репозиторію на linux/debian. Ті самі команди працюють і в Debian 12.

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Встановлення Docker на AlmaLinux 10

AlmaLinux і Rocky Linux використовують репозиторій Docker для RHEL. Щоб не було конфлікту з вбудованим Podman, спершу приберіть його, а потім встановіть Docker. Ті самі команди підходять для AlmaLinux 9 і Rocky Linux 9 і 10.

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

Якщо під час першого встановлення запитають, чи прийняти ключ підпису репозиторію, натисніть y. У системах сімейства RHEL служба не запускається автоматично після встановлення, тож останній рядок systemctl enable --now docker вмикає її зараз і під час завантаження.

Перевірка встановлення й перший контейнер

Запустіть тестовий контейнер командою нижче. Якщо з'явиться повідомлення, що починається з Hello from Docker, отже рушій, завантаження образів і запуск контейнерів працюють. З прапорцем --rm контейнер видаляється одразу після завершення.

Термінал
docker run --rm hello-world
docker compose version

Якщо ви хочете користуватися Docker під звичайним користувачем, додайте його до групи docker і ввійдіть знову. Група docker дає права, рівні root, тож додавайте лише довірених користувачів.

Термінал
usermod -aG docker username

Запуск сервісів через Docker Compose

Compose дає змогу описати налаштування контейнерів в одному YAML файлі й запустити їх однією командою. Під час перенесення чи створення нового сервера той самий файл заново піднімає те саме середовище. Наприклад, файл для одного вебсервера Nginx виглядає так.

Термінал
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

Відкрийте в браузері http://YOUR_SERVER_IP, і з'явиться сторінка Nginx. Якщо покласти index.html у папку html, відобразиться цей файл. З часто вживаних команд достатньо чотирьох.

  • docker compose ps: показує запущені контейнери та їхні порти.
  • docker compose logs -f: показує логи в реальному часі. Вихід через Ctrl+C.
  • docker compose pull && docker compose up -d: завантажує нові образи й оновлює контейнери до нової версії.
  • docker compose down: зупиняє й видаляє контейнери. Дані в томах зберігаються.

Якщо вказати restart: unless-stopped, контейнери автоматично піднімуться після перезавантаження сервера. Зупиненими лишаться лише ті, які ви зупинили самі.

Файрвол і публікація портів

Docker сам додає порти, опубліковані через ports:, до правил файрвола (iptables) і відкриває їх. Тож порт, указаний у ports:, доступний ззовні, навіть якщо його не дозволено в ufw. Бази даних і панелі керування, які не потрібно показувати назовні, прив'яжіть лише до 127.0.0.1, як нижче, і вони будуть доступні тільки зсередини сервера.

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

Зручно відкривати для вебсервісів лише порти 80 і 443, а решта сервісів нехай звертаються одне до одного за іменем усередині однієї мережі Compose. Для базового файрвола всього сервера дотримуйтеся посібника з базового файрвола і відкрийте лише SSH, HTTP і HTTPS.

Керування логами й диском

Якщо нічого не налаштувати, логи контейнерів накопичуються без обмежень. Вкажіть драйвер логів local у /etc/docker/daemon.json, як нижче, і логи стискатимуться та зберігатимуться лише в заданому обсязі. Після збереження виконайте systemctl restart docker: налаштування застосується до нових контейнерів.

/etc/docker/daemon.json
{
  "log-driver": "local"
}

Невикористовувані образи й зупинені контейнери теж займають місце на диску. Перегляньте обсяг командою docker system df і видаліть невикористовувані образи командою docker image prune -a. Якщо даних стає багато, можна підключити до сервера блоковий диск NVMe і використовувати його як папку даних Docker.

Збереження даних і наступні кроки

Контейнер можна будь-коли видалити й створити заново, але дані в томах заново не створиш. Регулярно робіть дамп бази даних, а весь сервер захищайте автоматичним резервним копіюванням або знімками. Як це зробити, описано в посібнику з резервних копій і знімків.

Файл Compose для запуску WordPress у Docker є в посібнику зі встановлення WordPress. Якщо ви хочете розгортати кілька застосунків через вебінтерфейс і автоматично отримувати сертифікати HTTPS, створіть сервер з образу Coolify або Dokploy. Відповідні розміри для роботи з контейнерами зібрано на сторінці контейнерний VPS.

Корисні посібники на тему

Налаштування, які варто зробити слідом за цим посібником.

Усі посібники