多个网桥上的容器的networking名称

我在一个桥接networkingN1上启动一个容器,比如C1:

docker network create --driver bridge N1 docker run --net=N1 --name C1 -d some image 

然后我在N2上启动另一个容器C2:

 docker network create --driver bridge N2 docker run --net=N1 --name C1 -d some image 

我想启动第三个容器(这将是一个可从9090端口访问的反向代理)C3,以便可以看到C1:

 docker run --net=N1 -p 9090:9090 --name C3 

然后我从C3里面访问C1,它的名字是C1。 所以例如从C3我可以做

 curl http://C1 

然后,我可以在C3内部运行一个反向代理,并将来自端口9090的请求转发到C1上的其他一些端口。

但是,如果我想添加N2到C3:

 docker run --net=N1 --net=N2 -p 9090:9090 --name C3 

然后从C3里面,如果我查找C1或C2,我得到一个主机没有find:

 curl http://C1 host not found 

在这种情况下,C1和C2的名称是什么?

要将容器连接到第二个networking,您需要使用docker network connect <network> <container>docker run命令只支持一个networking。

您可以在容器启动之前或之后执行此操作。 一些进程在启动之前需要额外的接口。

 docker create --name C3 --net=N1 <image> docker network connect N2 C3 docker start C3 

容器现在有多个接口

 $ docker exec C3 ip ad sh ... 360: eth0@if361: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:14:00:03 brd ff:ff:ff:ff:ff:ff inet 172.20.0.3/16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe14:3/64 scope link valid_lft forever preferred_lft forever 362: eth1@if363: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:15:00:03 brd ff:ff:ff:ff:ff:ff inet 172.21.0.3/16 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe15:3/64 scope link valid_lft forever preferred_lft forever 

容器可以parsing并连接到两个networking上的容器

 $ docker exec C3 ping -c 1 C1 PING ping2 (172.20.0.5): 56 data bytes 64 bytes from 172.20.0.5: icmp_seq=0 ttl=64 time=0.221 ms --- ping2 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.221/0.221/0.221/0.000 ms $ docker exec C3 ping -c 1 C2 PING ping1 (172.21.0.5): 56 data bytes 64 bytes from 172.21.0.5: icmp_seq=0 ttl=64 time=0.177 ms --- ping1 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.177/0.177/0.177/0.000 ms 

一旦开始进入多个networking,使用Docker Compose v2定义来设置和运行您的环境可能会更容易。