如何将容器链接传递到子容器?

时间:2019-05-21 18:44:37

标签: docker

我运行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 个答案:

答案 0 :(得分:1)

简洁明了:只需将--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的Shell。我试图缩进一些东西,希望能达到这个水平清除兔子的洞。)

答案 1 :(得分:0)

您可以从另一个容器启动一个容器,但是我认为这不是您想要的。您可以使用与B相同的命令来启动容器A,只需更改名称即可。您可以使用容器名称作为主机来与容器进行通信。要从db访问A,请运行postgres -h db。运行ping db时,您可以看到db容器的实际IP地址。