Чем отличается запуск контейнеров в отдельности от их запуска через Docker Compose?

Зачем в Docker Compose YAML используется свойство networks? Какие преимущества предоставляет Docker Compose, помимо возможности запуска набора образов одним файлом? Каким образом это свойство улучшает взаимодействие между сервисами, используемыми в контейнерах?
  • 21 декабря 2023 г. 18:07
Ответы на вопрос 4
Запуск контейнеров в отдельности и через Docker Compose имеет несколько отличий. 

При запуске контейнеров в отдельности каждый контейнер запускается командой docker run отдельно, и необходимо вручную настраивать связи между контейнерами, такие как объединение в общую сеть или установка переменных окружения для взаимодействия с другими контейнерами.

Docker Compose предоставляет возможность запуска набора образов одним файлом конфигурации (docker-compose.yml), что значительно упрощает управление контейнерами и их взаимодействие. С помощью YAML-файла можно описать все необходимые параметры и зависимости между контейнерами, и запустить их одной командой docker-compose up. Docker Compose самостоятельно создаст необходимые сети, настроит связи между контейнерами и сможет автоматически масштабировать сервисы в зависимости от заданных параметров (например, количество реплик).

Свойство networks в Docker Compose YAML-файле используется для определения сетей, которые должны быть созданы для контейнеров. Оно позволяет группировать контейнеры в отдельные сети и указывать правила доступа между сетями и контейнерами. Это упрощает взаимодействие между сервисами, используемыми в контейнерах, так как можно явно задать сеть, к которой принадлежит каждый контейнер, и настроить доступ к этой сети для других контейнеров.
А что поднятие одним файлом всех контейнеров, всех сетей, и всех волюмов, с последующим освобождением всего одновременно уже не является достаточным преимуществом?
Почитайте про декларативное описание и управление и поймете разницу.
Ну например.. 
у меня есть задача разместить на сервере Xray-proxy с переадресацией на socks+port
сделать мне это надо было несколько раз(несколько сервисов)

Если я зафигачу как ты предлагаешь, то мне придется делать разные порты для sock сервера, а это разные конфиги, а это лень писать...

А так - я поместил по 2 сервиса - xray+socks(это 2 разных контейнера) в одну сеть, к примеру network1
и обращаюсь из сервера xray к сервису socks по имени в yml..

и таких "связок" я зафигачил 10шт на 1 серваке.

Друг друга они не видят, порты у всех в конфигах одинаковые, внешнюю часть проксирует nginx...

Соответственно контейнер с nginx подключен ко всем сетям, и делает reverse proxy по имени из yml... )

Ну и как уже указали - ты можешь написать сколько угодно сервисов в yml файл, запустить его 1 командой и у тебя всё поднимется.. чем ходить и поднимать каждый контейнер по отдельности..

Например сервер Xibo, требует несколько сервисов.. че мне ходить по 1 их поднимать?
Вроде вот так удобнее
Похожие вопросы