2016-08-29 50 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

相关问题