2016-08-29 81 views
0

我已經在Ubuntu VM上安裝了Docker。運行Ubuntu docker容器。這些碼頭集裝箱採用的IP地址爲172.17.*.* (eth0)。有了這個IP,我將無法從外面ping /訪問碼頭集裝箱。
因此,我試圖分配一個IP與我的本地網絡範圍。我遵循的步驟:Ubuntu VM上的Docker容器的網絡連接

  • 創建一個新的橋樑網絡,子網和網關的IP塊

    $ docker network create --subnet 10.255.*.0/24 --gateway 10.255.*.254 ipstatic

  • 運行在該塊特定IP Ubuntu的容器

    $ docker run --rm -it --net ipstatic --ip 10.255.*.2 phusion/ubuntu

  • 將捲髮從任何其他地方(假設是被一個公共的IP塊杜)

    $ curl 10.255.*.2

捲曲:(7)無法連接到10.255 * 2端口80:連接 拒絕

有了這個,即使主機無法訪問10.255.*.*網絡。碼頭集裝箱採用IP 10.255.*.2,但仍無法從外部訪問。我是Docker的新手。我的目標是從我的本地網絡訪問碼頭集裝箱。

回答

0

創建容器時,您可以指定network_mode: "host"。它將在與主機相同的IP上可用。但是,您必須確保它不會嘗試收聽已經在使用的端口。

如:

version: "2" 
services: 
    myapp1: 
    network_mode: "host" 
    etc 

然而,這是很好的做法,認爲該主機堡壘和限制由外界直接訪問的容器。例如,只保留nginx在公共場所,並將所有其他容器保存在私人內部網絡中。我剛剛寫了關於這個few minutes ago的另一個答案。

+0

謝謝您的信息。如果使用** - net = host **,則碼頭容器將具有與主機相同的IP /網絡配置。我正在尋找從同一主機啓動多個容器(不同IP),並從外部訪問它們。 – user3432296

+0

然後'--net = host'不是你想要的。只需在默認內部橋接網絡中的主機內運行容器,並使用端口轉發使其對外界可見。例如'docker run --name myapp -p 8080:80 nginx'。調出地址爲http:// :8080的瀏覽器,並顯示nginx的默認頁面。 – Alkaline

相關問題