2017-06-18 120 views
2

我知道在運行容器時,我可以設置--network參數,其值可以來自docker network ls的結果中的任何一個。
不過,我已經看到了一些運行容器是這樣的:這是什麼意思,碼頭運行 - 網絡=容器:CONTAINERID`?

$ docker run --network=container:CONTAINERID IMAGE 

...我已經尋找這種用法,但沒有得到文檔來解釋它。

我已經做了一些實驗,發現容器使用另一個容器的網絡共享相同的網絡堆棧,似乎這兩個容器在同一host,他們可以互相使用localhost調用。

因此,通過設置--network=container:CONTAINERID來運行容器時,這是否意味着兩個容器共享相同的網絡堆棧?

回答

0

準確地說,你認爲,新容器被給予相同的網絡名稱空間作爲CONTAINERID。所以是的,同樣的網絡堆棧。正如您發現的那樣,這意味着容器可以通過本地主機相互聯繫,這也意味着您需要小心端口映射,因爲每個容器在名稱空間內都需要唯一的端口。

它記錄在docker runreference here

--network="bridge" : Connect a container to a network 
         'bridge': create a network stack on the default 
         Docker bridge 
         'none': no networking 
      # -----> 'container:<name|id>': reuse another container's 
         network stack 
         'host': use the Docker host network stack 
         '<network-name>|<network-id>': connect to a 
         user-defined network 
+0

明白了。謝謝。 – flyer