Как двунаправленно связать контейнеры в мостовой (docker0) сети - PullRequest
0 голосов
/ 02 апреля 2020

Как двунаправленно связать контейнеры в мостовой (docker0) сети.

Конфигурация:

  • Windows 10 Pro
  • Docker версия 19.03. 8, сборка afacb8b

Я пытаюсь связать два контейнера, которые были созданы следующим образом:

$ docker container run -dit --name alpine_1 alpine sh
$ docker container run -dit --name alpine_2 --link alpine_1 alpine sh

Отказ от ответственности : Я знаю, что --link flag является устаревшим, и его использование не рекомендуется, а официальная документация поощряет использование настраиваемой сети, но это для целей обучения.

Оба контейнера созданы и работают в bridge ( docker0) сеть, и я могу пинговать от alpine_2 до alpine_1 :

$ docker container exec alpine_2 ping alpine_1
PING alpine_1 (172.17.0.4): 56 data bytes
64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.099 ms
[...]

Но в другом направлении это невозможно:

$ docker container exec alpine_1 ping alpine_2
ping: bad address 'alpine_2'

Если я проверяю оба контейнера, я понимаю, что HostConfig.Links отличаются друг от друга.

$ docker container inspect -f "{{.HostConfig.Links}}" alpine_1
[]
$ docker container inspect -f "{{.HostConfig.Links}}" alpine_2
[/alpine_1:/alpine_2/alpine_1]

Я пытался связать контейнеры с помощью команды network connect, отключаясь и соединяясь с подходящая ссылка на контейнер alpine_2 , но тоже не работает.

$ docker network disconnect bridge alpine_1
$ docker network connect --link alpine_2 bridge alpine_1
$ docker container inspect -f "{{.HostConfig.Links}}" alpine_1
[]

Что действительно изменилось, так это мост Links.

$ docker container inspect -f "{{.NetworkSettings.Networks.bridge.Links}}" alpine_1
[alpine_2]

Как связать контейнер alpine_1 с alpine_2 без запуска нового контейнера? И каковы варианты использования флага --link в команде network connect?

...