Docker 如何将特定的IP分配给容器,并使其在VM主机外部可访问?
我希望使我的两个容器在VM主机之外的单独特定IP地址(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
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