Подключение запущенного контейнера к сети
На этом этапе вы узнаете, как подключить запущенный Docker-контейнер к существующей сети. Это полезно, когда у вас уже запущен контейнер, и вам нужно, чтобы он мог взаимодействовать с другими контейнерами или службами в определенной сети.
Сначала создадим новую сеть, которую будем использовать для этой демонстрации. Создадим мостовую сеть с именем my-network
.
docker network create my-network
Вы должны увидеть вывод, похожий на следующий, что означает, что сеть успешно создана:
<network_id>
Теперь запустим простой контейнер, который изначально не подключен к сети my-network
. Запустим контейнер на основе образа alpine
в фоновом режиме (-d
) и назовем его my-container
.
docker run -d --name my-container alpine sleep infinity
В качестве вывода будет идентификатор контейнера:
<container_id>
Чтобы убедиться, что контейнер запущен и не подключен к сети my-network
, можно проверить настройки сети контейнера.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
В выводе будет показана стандартная мостовая сеть, но не my-network
:
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
Теперь подключим запущенный контейнер my-container
к сети my-network
с помощью команды docker network connect
.
docker network connect my-network my-container
Если команда выполнена успешно, не будет никакого вывода.
Чтобы убедиться, что контейнер теперь подключен к сети my-network
, проверим настройки сети контейнера еще раз.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
На этот раз в выводе должны быть показаны как стандартная мостовая сеть, так и my-network
:
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
},
"my-network": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
Наконец, удалим созданный контейнер и сеть.
docker stop my-container
docker rm my-container
docker network rm my-network