Пользовательские мостовые сети (Custom Bridge Networks)
Хотя Docker предоставляет сеть по умолчанию типа мост (bridge), создание пользовательских мостовых сетей обеспечивает лучшую изоляцию и контроль над взаимодействием между контейнерами.
- Сначала посмотрим на текущий список сетей Docker:
docker network ls
Вы должны увидеть что-то вроде этого:
NETWORK ID NAME DRIVER SCOPE
296d1b460b17 bridge bridge local
91199fc6ad2e host host local
1078d2c781b6 none null local
- Теперь создадим пользовательскую мостовую сеть:
docker network create my-custom-bridge
- Снова выведем список всех сетей Docker, чтобы убедиться, что сеть создана:
docker network ls
Теперь в выводе вы должны увидеть my-custom-bridge
:
NETWORK ID NAME DRIVER SCOPE
296d1b460b17 bridge bridge local
91199fc6ad2e host host local
7215f99d0080 my-custom-bridge bridge local
1078d2c781b6 none null local
- Запустим два контейнера в пользовательской мостовой сети и установим утилиту
ping
:
docker run --network=my-custom-bridge --name container1 -d nginx
docker run --network=my-custom-bridge --name container2 -d nginx
Теперь установим утилиту ping
в обоих контейнерах. Это необходимо, так как в стандартном образе Nginx нет утилиты ping
:
docker exec container1 apt-get update && docker exec container1 apt-get install -y iputils-ping
docker exec container2 apt-get update && docker exec container2 apt-get install -y iputils-ping
- Протестируем взаимодействие между контейнерами:
docker exec container1 ping -c 4 container2
Вы должны увидеть успешные ответы на запросы ping
, что показывает, что контейнеры в одной и той же пользовательской мостовой сети могут взаимодействовать, используя имена контейнеров. Это работает, потому что встроенный DNS Docker преобразует имена контейнеров в их IP-адреса в рамках одной сети.
Если вы не видите успешных ответов на запросы ping
, убедитесь, что оба контейнера работают (docker ps
) и что вы правильно установили утилиту ping
.