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

时间:2016-02-05 07:35:17

标签: docker boot2docker docker-machine

我希望在VM主机外部的两个容器可以在其独立的特定IP地址(192.168.0.222192.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 590d5108docker-machine version 0.6.0, build e27fb87,使用boot2docker / VirtualBox驱动程序。

我一直试图解决这个问题,但没有运气,我已经阅读了以下问题和答案:

1 个答案:

答案 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