Ответ
Кастомные bridge-сети в Docker создаются для изоляции групп контейнеров и организации их взаимодействия в рамках одной виртуальной сети, отделенной от сети по умолчанию (bridge).
Ключевые преимущества:
- Изоляция: Контейнеры в разных кастомных сетях не могут общаться друг с другом напрямую, что повышает безопасность.
- Встроенный DNS: Docker предоставляет автоматическое разрешение имен контейнеров в IP-адреса в пределах одной кастомной сети. Это позволяет контейнерам обращаться друг к другу по именам, а не по IP.
- Гибкая конфигурация: Можно задавать подсети, шлюзы и другие сетевые параметры.
Пример создания и использования:
# 1. Создание кастомной bridge-сети
docker network create my-app-net
# 2. Запуск контейнера с базой данных в этой сети
docker run -d --name db --network my-app-net postgres
# 3. Запуск контейнера приложения, который сможет обратиться к БД по имени 'db'
docker run -d --name app --network my-app-net -e DATABASE_HOST=db my-app-image
В этом примере контейнер app сможет подключиться к postgres по адресу db, так как они находятся в одной кастомной сети my-app-net.
Ответ 18+ 🔞
Да ты послушай, что эти ваши докерные сети вытворяют! Кастомные bridge-сети — это ж как отдельные коммуналки для твоих контейнеров устраивать. Чтобы одни в своей кухне шарились, а другие — в своей, и не лезли, куда не просят.
Зачем это, спросишь? А вот зачем, ёпта:
- Изоляция, блядь: Это ж святое! Чтоб твой фронтенд не шарился к базе данных от другого проекта, как сосед по парадной в твой холодильник. Каждая сеть — свой закрытый клуб, членский билет по IP не купишь.
- Встроенный DNS, ядрёна вошь: Это же магия! Ты больше не должен, как последний раб, вписывать айпишники, которые ещё и меняются. Запустил контейнер с именем
db— и все в этой сети могут к нему по имениdbобращаться. Docker сам всё разрешит, будто у него своя телефонная книжка. - Гибкая конфигурация: Хочешь свою подсеть, свой шлюз — хуй с горы, настраивай. Не нравится стандартное — сделай как тебе удобно.
Смотри, как это на практике выглядит, в рот меня чих-пых:
# 1. Создаём свою сеть, типа "моя-сеть-для-приложухи"
docker network create my-app-net
# 2. Запускаем базу данных прямо в этой сети. Сразу в домик!
docker run -d --name db --network my-app-net postgres
# 3. А теперь запускаем само приложение в ЭТУ ЖЕ СЕТЬ.
# И оно спокойно стучится к базе по имени 'db', а не по какому-то левому айпишнику!
docker run -d --name app --network my-app-net -e DATABASE_HOST=db my-app-image
Вот и вся магия, сука. Контейнер app орёт в сеть: «Эй, db, ты где?» — и Docker ему тихонько так подсказывает: «Да вот же он, рядом, общайтесь на здоровье, только не деритесь». Красота же!