Пользовательские мостовые сети
Хотя 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 была установлена без ошибок.