如何dynamic地将Docker容器的IP地址映射到另一个容器

我有几个泊坞窗容器在主机上运行。 我有一个场景,我需要将一个容器的IP地址映射到另一个容器中可用的configuration文件。 我知道我可以使用docker inspect [container]命令获取容器的IP地址。 我假设IP地址是每次重新启动容器时dynamic分配的。 所以每次我需要在另一个容器中更改此IP地址。 是否有可能有一个静态IP容器或我可以使用主机的IP地址,而不是容器的IP地址。 我是docker世界的新手。

另外我有一个情况,我需要映射IP地址到另一个主机上运行的容器。 例如,我有一个在HostA和HostB运行的tomcat容器中运行的redis容器。 为了从tomcat与redis通信,我需要在tomcat容器中映射redis的ip地址和端口。 docker工人如何做到这一点?

你可以像在文档中一样运行链接容器 – 链接容器 :

 docker run -itd --name=container4 --link container5:c5 image docker run -itd --name=container5 --link container4:c4 image 

通过别名 ping第二个容器(c5)

 docker attach container4 / # ping -w 4 c5 PING c5 (172.25.0.5): 56 data bytes 64 bytes from 172.25.0.5: seq=0 ttl=64 time=0.070 ms 

所以你可以看到有可能用别名 ping第二个容器– 而不是IP地址

到你的第二个quiton:如果你有redistomcat ,他们知道彼此的IP地址(因为他们在某个networking中而可以访问),所以这几乎都是关于networking的configuration。

正如Vlado指出的那样,您应该通过主机名访问容器,并允许Dockerpipe理将这些名称映射到IP地址。 在用户定义的networking中 ,这种传统链接和链接有两种select。 这两种描述都值得一读,但是他的段落概括了两种方法(我的重点)

请注意,在创buildcontainer4时,我们链接到了一个名为container5的容器,该容器尚未创build。 这是默认桥接networking中的传统链路与用户定义的networking中的新链路function之间的行为差​​异之一。 传统链接本质上是静态的,它将容器与别名进行硬绑定,并且不允许链接容器重新启动。 虽然用户定义networking中的新链接function本质上是dynamic的,并且支持链接容器重启,包括容忍链接容器上的IP地址更改。

根据你的下一个问题 ,如果你想在多个主机上运行容器,你可能会想要build立一个覆盖networking 。 那些肯定不支持传统的链接。

官方文档有很好的例子,包括运行什么命令,创build链接和用户定义的networking。