Вопрос проверяет понимание различий между инструментами оркестрации Docker для одного хоста и кластера.
Docker Compose и Docker Swarm решают разные задачи. Compose фокусируется на определении и запуске многоконтейнерных приложений на одной машине, используя файл docker-compose.yml. Swarm — это встроенный в Docker режим кластеризации, который объединяет несколько хостов в единый пул ресурсов и управляет распределением контейнеров.
Compose позволяет описать сервисы, сети и тома в YAML-файле. Он идеален для локальной разработки, тестирования и CI/CD, где не требуется масштабирование на несколько узлов. Пример простого docker-compose.yml:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: exampleЗапуск одной командой docker-compose up поднимает все сервисы.
Swarm превращает группу Docker-хостов в единый виртуальный хост. Он обеспечивает автоматическое распределение контейнеров, балансировку нагрузки, отказоустойчивость и масштабирование. Для работы требуется инициализация кластера командой docker swarm init на менеджере и добавление рабочих узлов. Пример сервиса в Swarm:
docker service create --name web --replicas 3 -p 80:80 nginxSwarm автоматически распределяет три реплики по узлам кластера.
Compose подходит для простых сценариев: разработка, тестирование, небольшие проекты на одном сервере. Swarm — для продакшн-сред, где нужна высокая доступность, масштабирование и управление кластером. Для более сложных оркестраций (например, с продвинутыми стратегиями развертывания) часто выбирают Kubernetes, но Swarm проще в настройке и интеграции с Docker.
Вывод: Docker Compose — для локальной разработки и простых развертываний, Docker Swarm — для продакшн-кластеров с отказоустойчивостью и масштабированием.