Docker Compose на Ubuntu: встановлення та помилки

19.04.2026 0 By AdminA

Що таке Docker Compose і навіщо він потрібен

Docker Compose — це інструмент для запуску кількох контейнерів як єдиного застосунку. Замість того щоб вручну створювати окремі команди для бази даних, вебсервера, кешу або бекенду, ви описуєте все в одному файлі compose.yml і запускаєте командою кілька сервісів одразу.

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

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

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

Оновлення пакетів

Спочатку варто оновити індекс пакетів:

  • sudo apt update
  • sudo apt upgrade -y

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

Якщо Docker ще не встановлений, додайте його з репозиторію або скористайтеся стандартними пакетами вашої версії Ubuntu. Після встановлення перевірте, чи працює демон:

  • docker --version
  • sudo systemctl status docker

Якщо сервіс не запущено, його можна активувати командою sudo systemctl enable --now docker.

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

У більшості випадків найкраще встановлювати Compose як плагін до Docker. На Ubuntu це зручно, бо не потрібно окремо керувати старою версією docker-compose.

  • sudo apt install docker-compose-plugin
  • docker compose version

Якщо команда показує версію, інструмент готовий до роботи. Зверніть увагу: сучасний формат команди — саме docker compose, а не docker-compose. Обидва варіанти можуть зустрічатися в документації, але нові проєкти краще будувати під актуальний синтаксис.

Перший приклад: простий вебсайт у контейнері

Найпростіший спосіб перевірити, що Compose працює, — запустити один контейнер із Nginx. Створіть у каталозі проєкту файл compose.yml з таким вмістом:

services:
web:
image: nginx:latest
ports:
- "8080:80"

Після цього виконайте:

  • docker compose up -d

Команда завантажить образ, створить контейнер і запустить його у фоновому режимі. Відкрийте http://localhost:8080 у браузері, і ви побачите стандартну сторінку Nginx.

Щоб зупинити проєкт, використайте:

  • docker compose down

Цей приклад показує базову логіку: сервіс описується в YAML-файлі, а потім керується однією командою.

Приклад із базою даних та застосунком

Справжня сила Docker Compose проявляється, коли потрібно підняти кілька пов’язаних сервісів. Наприклад, вебзастосунок може працювати разом із PostgreSQL. У такому разі в compose-файлі зазвичай описують два сервіси: app і db.

Приклад структури:

services:
db:
image: postgres:16
environment:
POSTGRES_DB: demo
POSTGRES_USER: demo
POSTGRES_PASSWORD: secret
volumes:
- db_data:/var/lib/postgresql/data
app:
build: .
ports:
- "8000:8000"
depends_on:
- db
volumes:
db_data:

У цьому прикладі база даних зберігає дані у named volume, щоб вони не зникали після перезапуску контейнера. Параметр depends_on вказує порядок старту сервісів, хоча сам по собі не гарантує, що база вже повністю готова приймати з’єднання. Для деяких застосунків це важливий нюанс.

Корисні команди Docker Compose

Під час роботи з Compose часто використовують не лише запуск і зупинку. Ось набір команд, які варто запам’ятати:

  • docker compose up -d — запуск сервісів у фоновому режимі
  • docker compose down — зупинка і видалення контейнерів
  • docker compose ps — перегляд активних сервісів
  • docker compose logs -f — перегляд логів у реальному часі
  • docker compose pull — завантаження нових версій образів
  • docker compose build — збирання образів із Dockerfile

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

Типові помилки під час роботи з Compose на Ubuntu

1. Змішування старого і нового синтаксису

Одна з найчастіших проблем — плутанина між docker-compose і docker compose. Якщо в системі встановлено лише плагін, команда з дефісом може не працювати. У нових інструкціях краще використовувати сучасний формат без дефіса.

2. Неправильні відступи в YAML

Файл Compose дуже чутливий до відступів. Одна зайва або пропущена пробіл-символ може зламати весь конфіг. Якщо під час запуску з’являється помилка парсингу, перевірте структуру файлу: ключі, рівні вкладеності та формат списків.

3. Конфлікт портів

Якщо порт уже зайнятий іншою програмою, контейнер не зможе на нього прив’язатися. Наприклад, якщо на машині вже працює сервіс на 8080, мапінг 8080:80 викличе конфлікт. У такому разі змініть зовнішній порт, наприклад на 8081:80.

4. Недостатні права доступу до Docker

На Ubuntu новий користувач може не мати доступу до Docker без sudo. Якщо команда видає помилку прав доступу, можна або запускати її з sudo, або додати користувача до групи docker. Після цього зазвичай потрібно вийти з сеансу і зайти знову.

5. Контейнер стартує, але застосунок недоступний

Іноді Compose запускає контейнер успішно, але сайт або API не відкривається. Причини можуть бути різні: застосунок слухає не той порт, сервіс прив’язався лише до localhost всередині контейнера, або мережеві налаштування вказані неправильно. У таких випадках допомагають логи контейнера та перевірка конфігурації порту в застосунку.

6. Дані зникають після перезапуску

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

Практичні поради для стабільної роботи

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

Також корисно періодично перевіряти стан контейнерів і переглядати логи. Якщо ви часто оновлюєте образи, не забувайте повторно виконувати docker compose pull або docker compose build, інакше система може запускати застарілу версію застосунку.

Висновок

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

Comments

comments