2015-12-05 73 views
20

使用1.9,是否有辦法直接啓動具有兩個或多個網絡接口的容器?啓動具有多個網絡接口的容器

您可以在容器以「docker network connect」啓動後執行此操作,但這意味着該進程已在運行,並且可能會錯過創建新進程。

回答

1

不,這是不可能的。該文檔還顯示必要的命令行選項--net只接受一個單一的網絡名稱:http://docs.docker.com/engine/reference/run/#network-settings

也請記住,多克1.9不斷更新/etc/hosts文件的容器內,使正在運行的進程不能依賴於初始該文件的狀態。最好的方法是通過手動讀取/etc/hosts文件或查詢dns服務器來讓流程知道更新。這樣,當第二個網絡連接時,您不會遇到任何問題。

+0

我可以肯定。我嘗試過'docker run -it --network bridge --network mynet/bin/bash' - 沒有運氣,'無效的參考格式'。還嘗試了兩個參數'... --network bridge mynet ...'但是Docker認爲'mynet'是我想要使用的映像。 –

5

@gesellix回答說,目前不可能。

下可以找到 https://github.com/docker/docker/issues/17750

這個問題有這方面的一些懸而未決的改進。 正如我從討論中看到的 - 當前的想法是創建容器(使用docker create),連接網絡(docker network connect),然後啓動(docker start)。

可以在https://github.com/docker/docker/pull/17796

UPD的評論檢查的理由是:#17750被關閉,將在1.10

+0

正是我需要的。感謝您的反饋! – Robert

+0

如果我需要在同一網絡上有多個IP地址,該怎麼辦?網絡連接只是改變IP到另一個。 – Mikz

27

可這個問題是頂部做碼頭工人方面和多個網絡接口的搜索。雖然不是問題中的必需版本,但我在此留下一些信息:

使用Docker 1.12+可以將多個網絡接口添加到泊塢窗容器,但需要先創建容器,然後將其連接到

$ docker create --network=network1 --name container_name containerimage:latest 
$ docker network connect network2 container_name 
$ docker start container_name 

這是需要先創建網絡:

$ docker network create --driver=bridge network1 --subnet=172.19.0.0/24 
$ docker network create --driver=bridge network2 --subnet=172.19.1.0/24 

另外,還可以啓動容器通過使用附接dockerhost網絡接口的第二(和序列)網絡的NIC啓動容器之前--networ k =碼頭運行中的主機參數:

$ docker run --net=host containerimage:latest 
+0

如果容器已啓動,它仍連接到新網絡並保持原始網絡可訪問。碼頭版本:1.13.1 – zw963

相關問題