我希望在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 version 1.10.0, build 590d5108
和docker-machine version 0.6.0, build e27fb87
,使用boot2docker / VirtualBox驱动程序。
我一直试图解决这个问题,但没有运气,我已经阅读了以下问题和答案:
答案 0 :(得分:3)
根据Jessie Frazelle,现在应该可以这样做 请参阅“IPs for all the Things”
这太酷了我几乎无法忍受。
在Docker 1.10中,令人敬畏的libnetwork团队添加了为容器指定特定IP的功能。如果您想查看拉取请求,请访问:docker/docker#19001。
# 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
这确实说明了您现在在new docker run --ip
option中看到的docker network connect
。
如果指定,则在重新启动已停止的容器时重新应用容器的IP地址。如果IP地址不再可用,则容器无法启动。
保证IP地址可用的一种方法是在创建网络时指定
--ip-range
,并从该范围外选择静态IP地址。这可确保在此容器不在网络上时,不会将IP地址提供给另一个容器。
$ 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
“可访问”部分将像往常一样涉及port forwarding。