Найшвидший спосіб: створити сервер з образу 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 з репозиторію ОС, спершу видаліть їх, щоб вони не змішувалися з офіційними. Невстановлені пакети просто пропускаються, тож команду можна виконати як є.
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. Додайте ключ і адресу репозиторію
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
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.
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.
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, як нижче, і вони будуть доступні тільки зсередини сервера.
ports:
- "127.0.0.1:5432:5432"Зручно відкривати для вебсервісів лише порти 80 і 443, а решта сервісів нехай звертаються одне до одного за іменем усередині однієї мережі Compose. Для базового файрвола всього сервера дотримуйтеся посібника з базового файрвола і відкрийте лише SSH, HTTP і HTTPS.
Керування логами й диском
Якщо нічого не налаштувати, логи контейнерів накопичуються без обмежень. Вкажіть драйвер логів local у /etc/docker/daemon.json, як нижче, і логи стискатимуться та зберігатимуться лише в заданому обсязі. Після збереження виконайте systemctl restart docker: налаштування застосується до нових контейнерів.
{
"log-driver": "local"
}Невикористовувані образи й зупинені контейнери теж займають місце на диску. Перегляньте обсяг командою docker system df і видаліть невикористовувані образи командою docker image prune -a. Якщо даних стає багато, можна підключити до сервера блоковий диск NVMe і використовувати його як папку даних Docker.
Збереження даних і наступні кроки
Контейнер можна будь-коли видалити й створити заново, але дані в томах заново не створиш. Регулярно робіть дамп бази даних, а весь сервер захищайте автоматичним резервним копіюванням або знімками. Як це зробити, описано в посібнику з резервних копій і знімків.
Файл Compose для запуску WordPress у Docker є в посібнику зі встановлення WordPress. Якщо ви хочете розгортати кілька застосунків через вебінтерфейс і автоматично отримувати сертифікати HTTPS, створіть сервер з образу Coolify або Dokploy. Відповідні розміри для роботи з контейнерами зібрано на сторінці контейнерний VPS.
