Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何将特定的IP分配给容器,并使其在VM主机外部可访问?_Docker_Boot2docker_Docker Machine - Fatal编程技术网

Docker 如何将特定的IP分配给容器,并使其在VM主机外部可访问?

Docker 如何将特定的IP分配给容器,并使其在VM主机外部可访问?,docker,boot2docker,docker-machine,Docker,Boot2docker,Docker Machine,我希望使我的两个容器在VM主机之外的单独特定IP地址(192.168.0.222,192.168.0.227)上可用,而无需端口映射。这意味着我希望使用容器的IP直接访问容器上的任何端口。我已经有机器在VM主机之外的网络中运行,范围为192.168.0.1–192.168.0.221 Docker 1.10.0现在可以做到这一点吗?如果可以,如何做到 我使用的是OS X 10.11,docker版本1.10.0,build 590d5108,docker机器版本0.6.0,build e27fb

我希望使我的两个容器在VM主机之外的单独特定IP地址(
192.168.0.222
192.168.0.227
)上可用,而无需端口映射。这意味着我希望使用容器的IP直接访问容器上的任何端口。我已经有机器在VM主机之外的网络中运行,范围为192.168.0.1–192.168.0.221

Docker 1.10.0现在可以做到这一点吗?如果可以,如何做到

我使用的是OS X 10.11,docker版本1.10.0,build 590d5108,docker机器版本0.6.0,build e27fb87,使用boot2docker/VirtualBox驱动程序


一段时间以来,我一直在努力解决这个问题,但运气不佳,我已经阅读了以下问题和答案:

根据,这现在应该是可能的。
见“

这太酷了,我简直受不了

在Docker 1.10中,网络团队添加了为容器指定特定IP的功能。如果要查看拉取请求,请访问:

这确实说明了您现在在中看到的问题

如果指定,则在重新启动已停止的容器时重新应用容器的IP地址。如果IP地址不再可用,则容器无法启动

确保IP地址可用的一种方法是在创建网络时指定一个
--IP范围
,并从该范围之外选择静态IP地址。这样可以确保当另一个容器不在网络上时,不会将IP地址提供给该容器


“使可访问性”部分通常包括:

# create a new bridge network with your subnet and gateway for your ip block
$ docker network create --subnet 203.0.113.0/24 --gateway 203.0.113.254 iptastic

# run a nginx container with a specific ip in that block
$ docker run --rm -it --net iptastic --ip 203.0.113.2 nginx

# curl the ip from any other place (assuming this is a public ip block duh)
$ curl 203.0.113.2

# BOOM golden
$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network

$ docker network connect --ip 172.20.128.2 multi-host-network container2