Создание базовой мостовой сети
На этом этапе мы научимся создавать базовую мостовую сеть в Docker. Мостовая сеть является типом сети по умолчанию для контейнеров. Контейнеры, подключенные к одной и той же мостовой сети, могут общаться между собой, при этом они изолированы от контейнеров на других мостовых сетях и сети хост-машины.
Сначала выведем список существующих Docker-сетей, чтобы увидеть сети по умолчанию.
docker network ls
Вы должны увидеть некоторые сети по умолчанию, такие как bridge
, host
и none
. Сеть bridge
- та, с которой мы будем работать.
Теперь создадим новую мостовую сеть. Назовем ее my-bridge-network
.
docker network create my-bridge-network
Эта команда создает новую мостовую сеть с настройками по умолчанию. Docker автоматически назначает подсеть и шлюз для этой сети.
Чтобы убедиться, что сеть успешно создана, выведем список Docker-сетей еще раз.
docker network ls
Теперь вы должны увидеть my-bridge-network
в списке.
Далее, изучим детали только что созданной сети, в том числе подсеть и шлюз, назначенные Docker.
docker network inspect my-bridge-network
Вывод этой команды предоставит подробную информацию о сети, такую как ее идентификатор, драйвер (который должен быть bridge
), а также подсеть и шлюз в разделе IPAM
.
Теперь запустим контейнер и подключим его к нашей новой сети. В этом примере мы будем использовать образ alpine
. Если у вас нет образа alpine
локально, Docker автоматически загрузит его.
docker run -d --name container1 --network my-bridge-network alpine sleep infinity
Эта команда запускает контейнер с именем container1
в фоновом режиме (-d
), подключает его к my-bridge-network
(--network my-bridge-network
) и поддерживает его работу, выполняя команду sleep infinity
.
Чтобы убедиться, что контейнер запущен и подключен к правильной сети, вы можете изучить информацию о контейнере.
docker inspect container1
В выводе найдите раздел Networks
. Вы должны увидеть my-bridge-network
в списке, а также IP-адрес, назначенный контейнеру в этой сети.
Наконец, запустим еще один контейнер и подключим его к той же сети, чтобы продемонстрировать взаимодействие между ними.
docker run -d --name container2 --network my-bridge-network alpine sleep infinity
Теперь и container1
, и container2
подключены к my-bridge-network
. Они должны иметь возможность общаться между собой, используя имена контейнеров или их IP-адреса в сети.
Чтобы проверить взаимодействие, мы можем выполнить команду внутри container1
для отправки пингов container2
. Сначала нам нужно установить пакет iputils
в контейнерах alpine, чтобы использовать команду ping
.
docker exec container1 apk add --no-cache iputils
docker exec container2 apk add --no-cache iputils
Теперь отправим пинги от container1
к container2
.
docker exec container1 ping -c 3 container2
Вы должны увидеть успешные ответы на пинги, что означает, что два контейнера на одной мостовой сети могут общаться.