Docker Compose на Ubuntu: встановлення та помилки
19.04.2026Що таке Docker Compose і навіщо він потрібен
Docker Compose — це інструмент для запуску кількох контейнерів як єдиного застосунку. Замість того щоб вручну створювати окремі команди для бази даних, вебсервера, кешу або бекенду, ви описуєте все в одному файлі compose.yml і запускаєте командою кілька сервісів одразу.
На Ubuntu Docker Compose особливо зручний для локальної розробки, тестових середовищ і невеликих проєктів. Він допомагає швидко відтворити однакову конфігурацію на різних машинах, а також спрощує перезапуск і оновлення контейнерів.
Встановлення Docker і Docker Compose на Ubuntu
Перш ніж встановлювати Compose, на системі має бути Docker Engine. На сучасних версіях Ubuntu найпростіше використовувати офіційний пакет Docker і плагін Compose, який викликається як docker compose без дефіса.
Оновлення пакетів
Спочатку варто оновити індекс пакетів:
sudo apt updatesudo apt upgrade -y
Встановлення Docker
Якщо Docker ще не встановлений, додайте його з репозиторію або скористайтеся стандартними пакетами вашої версії Ubuntu. Після встановлення перевірте, чи працює демон:
docker --versionsudo systemctl status docker
Якщо сервіс не запущено, його можна активувати командою sudo systemctl enable --now docker.
Встановлення Docker Compose
У більшості випадків найкраще встановлювати Compose як плагін до Docker. На Ubuntu це зручно, бо не потрібно окремо керувати старою версією docker-compose.
sudo apt install docker-compose-plugindocker 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: - dbvolumes: 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, портах або правах доступу, тож уважна перевірка конфігурації економить багато зусиль у майбутньому.