我正在Ubuntu 14.04上运行,并设置了docker0
的静态IP地址,然后通过防火墙从公共IP路由到该IP。我尝试设置我的后端API在Docker容器中运行,但有一些疑惑。
1.) 我该如何将docker0
的IP映射到容器的IP地址,以便docker0
知道将传入的数据包发送到容器(如果可能的话,动态地处理)。
2.) 如果还没有这样做,我该如何使得每次启动Docker容器时都不必重新设置此项内容?
提前感谢!
我正在Ubuntu 14.04上运行,并设置了docker0
的静态IP地址,然后通过防火墙从公共IP路由到该IP。我尝试设置我的后端API在Docker容器中运行,但有一些疑惑。
1.) 我该如何将docker0
的IP映射到容器的IP地址,以便docker0
知道将传入的数据包发送到容器(如果可能的话,动态地处理)。
2.) 如果还没有这样做,我该如何使得每次启动Docker容器时都不必重新设置此项内容?
提前感谢!
$> ip addr add 10.0.0.99/8 dev eth0
$> docker run -i -t --rm -p 10.0.0.99:80:8080 base
最近我遇到了同样的问题,并使用 网络容器 解决了它:
从此时起,网络容器在网络上可用,并将端口路由到服务容器。 主要优点是 '服务' 容器不必知道公共IP、DHCP等。这样每个运行的容器都可以在网络上公开。
为了方便起见,我创建了一个脚本,一次性完成所有操作。使正在运行的容器在公共IP上可用就像这样简单:
create-network-container.sh webserver ens32