在docker集装箱之间进行通信

我有一个服务器运行两个docker集装箱。

一个docker集装箱是一个networking服务器,另一个是一个selenium铬金属。

从容器与Web服务器,我想能够连接到铬驱动程序。

而Web服务器是这样启动的:

docker run -i -p 80:80 -d '<name>:<version>' /sbin/my_init 

selenium驱动程序是这样启动的:

 docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.4.0 

从主机上,我可以从curl的selenium容器中获得信息:

 curl http://localhost:4444/wd/hub/status # => {"state":"success","sessionId":.......... 

但是,从Web服务器容器我只得到:

 curl: (7) Failed to connect to localhost port 4444: Connection refused 

我能做些什么来让包含Web服务器的容器能够连接到另一个容器?

我认为你必须创buildnetworking: docker.com与networking帮助

基本容器联网示例:

首先,创build并运行两个容器container1和container2:

 $ docker run -itd --name=container1 busybox 18c062ef45ac0c026ee48a83afa39d25635ee5f02b58de4abc8f467bcaa28731 $ docker run -itd --name=container2 busybox 498eaaaf328e1018042c04b2de04036fc04719a6e39a097a4f4866043a2c2152 

创build一个独立的桥梁networking来testing。

 $ docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw 06a62f1c73c4e3107c0f555b7a5f163309827bfbbf999840166065a8f35455a8 

将container2连接到networking,然后检查networking以validation连接:

 $ docker network connect isolated_nw container2 $ docker network inspect isolated_nw [ { "Name": "isolated_nw", "Id": "06a62f1c73c4e3107c0f555b7a5f163309827bfbbf999840166065a8f35455a8", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ { "Subnet": "172.25.0.0/16", "Gateway": "172.25.0.1/16" } ] }, "Containers": { "90e1f3ec71caf82ae776a827e0712a68a110a3f175954e5bd4222fd142ac9428": { "Name": "container2", "EndpointID": "11cedac1810e864d6b1589d92da12af66203879ab89f4ccd8c8fdaa9b1c48b1d", "MacAddress": "02:42:ac:19:00:02", "IPv4Address": "172.25.0.2/16", "IPv6Address": "" } }, "Options": {} } ] 

注意container2被自动分配一个IP地址。 由于您在创buildnetworking时指定了–subnet,因此从该子网中select了IP地址。

提醒一下,container1只连接到默认桥接networking。