我运行postgres容器:
docker run --name db -p 5432:5432 postgres
然后我运行一些容器A,并链接到postgres容器:
docker run --name A --link=db:db [other params]
现在我在容器A内,并希望从此处运行容器B。 B也需要db
链接。我该怎么办?
答案 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地址。