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

fre*_*rik 5 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 version 1.10.0, build 590d5108docker-machine version 0.6.0, build e27fb87使用boot2docker/VirtualBox驱动程序.


我一直试图弄清楚这一点,没有运气,我已经阅读了以下问题和答案:

Von*_*onC 3

Jessie Frazelle表示,现在这应该是可能的。
\n请参阅“所有事物的 IP

\n
\n

这太酷了,我几乎无法忍受。

\n

在 Docker 1.10 中,出色的 libnetwork 团队添加了为容器指定特定 IP 的功能。如果您想查看拉取请求,请在此处查看\xe2\x80\x99:docker/docker#19001

\n
\n
# create a new bridge network with your subnet and gateway for your ip block\n$ docker network create --subnet 203.0.113.0/24 --gateway 203.0.113.254 iptastic\n\n# run a nginx container with a specific ip in that block\n$ docker run --rm -it --net iptastic --ip 203.0.113.2 nginx\n\n# curl the ip from any other place (assuming this is a public ip block duh)\n$ curl 203.0.113.2\n\n# BOOM golden\n
Run Code Online (Sandbox Code Playgroud)\n

这确实说明了您现在在 中看到的docker run --ip选项docker network connect

\n
\n

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

\n

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

\n
\n
$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network\n\n$ docker network connect --ip 172.20.128.2 multi-host-network container2\n
Run Code Online (Sandbox Code Playgroud)\n
\n

像往常一样,“使可访问”部分涉及端口转发

\n