Как передать ссылку на контейнер на дочерний контейнер? - PullRequest
0 голосов
/ 21 мая 2019

Я запускаю контейнер postgres:

docker run --name db -p 5432:5432 postgres

Затем я запускаю контейнер A со ссылкой на контейнер postgres:

docker run --name A --link=db:db [other params]

Теперь я нахожусь внутри контейнера A и хочу запустить контейнер Bотсюда.И B тоже нужна ссылка db.Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Коротко и просто: просто передайте --link=db:db также в дочерний контейнер.Пример:

$ docker run --rm -d --name db postgres:alpine
$ docker run --rm -it --name contA --link=db:db -v /var/run/docker.sock:/var/run/docker.sock docker:stable
  / # ping db
  PING db (172.17.0.2): 56 data bytes
  64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.357 ms
  [...] # works
  / # docker run --rm -it --name contB --link=db:db alpine:latest
    / # ping db
    PING db (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.388 ms
    [...] # works as well

($ - это Bash локальной машины, / # - это оболочка contA / contB. Я пытался сделать отступ, чтобы, надеюсь, сделать уровеньиз кроличьей норы очищен.)

0 голосов
/ 21 мая 2019

Вы можете запустить контейнер из другого контейнера, но я думаю, что это не то, что вы хотите. Вы можете запустить контейнер B той же командой, что и A, просто измените имя. Вы можете общаться с контейнерами, используя имя контейнера в качестве хоста. Для доступа к db из A вы запускаете postgres -h db. При запуске ping db вы можете увидеть фактические IP-адреса контейнера db.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...