Это машинный перевод текста, который может содержать ошибки!
Docker упрощает развёртывание приложений. Вместо ручной установки и настройки программного обеспечения на сервере вы определяете всё в конфигурационных файлах. Результат воспроизводимый, переносимый и быстрый для настройки.
Новичок в Docker?
[[Docker Level 1 - Ком i gang|🐳 Docker - Ком i gang]] и 🐳 Docker - Dockerfile og Compose знакомят с образами, контейнерами и простыми конфигурациями Compose — этот уровень строится на их основе, добавляя несколько сервисов и тома.
Что такое Docker Compose?
С помощью Docker Compose вы определяете несколько сервисов в одном файле (docker-compose.yml). Каждый сервис представляет собой контейнер со своей собственной конфигурацией.
services:
web:
image: nginx:latest
ports:
- "80:80"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
Одна команда настраивает всё:
docker compose up -d
Нужно ли вам переместить сервис на другой сервер? Скопируйте файл и выполните ту же команду. Всё идентично.
Почему это автоматизация?
Подумайте о разнице:
| Ручная настройка | С использованием Docker Compose |
|---|---|
| Установите Nginx вручную | image: nginx:latest |
| Настройте порты | ports: "80:80" |
| Установите Grafana вручную | image: grafana/grafana:latest |
| Задокументируйте все шаги | Всё задокументировано в файле .yml |
| Повторяйте всё на следующем сервере | docker compose up -d |
Файл конфигурации Docker Compose и есть документация. Он точно описывает, какие службы запущены, какие порты они используют и как настроены.
Полезные команды Docker
| Команда | Что делает |
|---|---|
docker compose up -d | Запускает все сервисы в фоне |
docker compose down | Останавливает и удаляет все контейнеры |
docker compose logs -f | Отслеживает логи в реальном времени |
docker compose pull | Получает последнюю версию всех образов |
docker compose restart | Перезапускает все сервисы |
docker ps | Показывает работающие контейнеры |
Тома: хранение данных вне контейнера
Контейнеры временны. Если вы удаляете контейнер, всё его содержимое исчезает. Для сохранения данных мы используем томы (volumes):
services:
database:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: hemmelig
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Здесь файлы базы данных хранятся в томе с именем db-data. Даже если вы удалите и повторно создадите контейнер, данные по-прежнему будут находиться там.
Обновление сервисов
Обновление сервиса Docker просто:
# Получить последнюю версию
docker compose pull
# Перезапустить с новой версией
docker compose up -d
Сравните это с обновлением вручную установленного программного обеспечения, когда вам может потребоваться загрузить его, настроить и надеяться на то, что ничего не сломается.
Задача 1 — Настройка Nginx с помощью Docker Compose
Создайте файл docker-compose.yml, который запускает веб-сервер Nginx:
- Создайте новую папку и создайте в ней файл
docker-compose.yml - Определите сервис со значением
image: nginx:latestна порту 80 - Выполните команду
docker compose up -d - Откройте адрес
http://localhostв браузере
Задание 2 — Добавьте сервис
Расширьте файл docker-compose.yml из задания 1, добавив дополнительный сервис. Например:
- Uptime Kuma на порту 3001
- Grafana на порту 3000
Запустите всё с помощью команды docker compose up -d и убедитесь в том, что оба сервиса работают одновременно.
Резюме
- Docker Compose позволяет определить несколько сервисов в одном файле
- Файл Compose является одновременно конфигурацией и документацией
- Тома (volumes) хранят данные вне контейнера, обеспечивая их сохранность при перезапусках
- Обновление выполняется командами
docker compose pull+docker compose up -d - Docker упрощает перенос сервисов между серверами