2017-08-05 75 views
2

我有一個運行兩個碼頭集裝箱的服務器。碼頭集裝箱之間的通信

一個碼頭集裝箱是一個網絡服務器,另一個是硒鉻金屬。

從容器與Web服務器,我想能夠連接到鉻驅動程序。

和Web服務器啓動這樣的:

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

硒驅動程序啓動這樣的:

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

從主機我能夠得到硒容器的信息與curl:

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

但是,從Web服務器容器我只得到:

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

我該怎麼做才能讓包含Web服務器的容器能夠連接到其他容器?

回答

2

我認爲你必須建立網絡:docker.com work with networks help

基本容器聯網例如:

首先,創建並運行兩個容器,container1和container2的:

$ docker run -itd --name=container1 busybox 

18c062ef45ac0c026ee48a83afa39d25635ee5f02b58de4abc8f467bcaa28731 

$ docker run -itd --name=container2 busybox 

498eaaaf328e1018042c04b2de04036fc04719a6e39a097a4f4866043a2c2152 

創建一個孤立的,橋網絡來測試。

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

06a62f1c73c4e3107c0f555b7a5f163309827bfbbf999840166065a8f35455a8 

連接container2的到網絡,然後檢查網絡以驗證連接:

$ 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地址。由於您在創建網絡時指定了--subnet,因此從該子網中選擇了IP地址。

提醒一下,container1只連接到默認橋接網絡。