我在Ubuntu VM上安装了docker。运行Ubuntu docker容器。这些docker容器在172.17.*.* (eth0)
中获取的IP地址。使用此IP,我将无法从外部ping /访问docker容器
因此,我尝试使用本地网络范围分配IP。我按照以下步骤操作:
使用您的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(假设这是一个公共ip块duh)
$ curl 10.255.*.2
卷曲:(7)无法连接到10.255。*。2端口80:连接 拒绝
这样,即使主机也无法访问10.255.*.*
网络。泊坞窗容器会占用IP 10.255.*.2
,但仍无法从外部访问。我是Docker的新手。我的目标是从我的本地网络访问docker容器。
答案 0 :(得分:0)
您可以在创建容器时指定network_mode: "host"。它将与您的主机使用相同的IP。但是,您必须确保它不会尝试收听已在使用的端口。
例如:
version: "2"
services:
myapp1:
network_mode: "host"
etc
但是,将主机视为堡垒并限制外部世界可直接访问的容器是一种很好的做法。例如,仅将nginx保留在公共面,并将所有其他容器保存在专用内部网络中。我刚刚写了另一个答案few minutes ago。
答案 1 :(得分:0)
感谢您的建议。 按照https://eatpeppershothot.blogspot.in/2015/12/using-pipework-to-enable-communication.html中提到的方法 我能够从容器上与网络上的其他设备进行通信。 请注意,这仅适用于独立Linux PC而非VM映像。