rob*_*ert 25 ip iptables docker boot2docker
我在ubuntu 14.04上运行它并设置docker0为静态IP,然后通过防火墙从公共IP路由到.我正在尝试将我的后端API设置为在docker容器中运行,并且被一些事情搞糊涂了.
1.)我如何将docker0ip 映射到容器的ip,以便docker0知道将传入的数据包发送到容器(如果可能,动态地).
2.)如果还没有以这种方式完成,我怎么能这样做,以便每当我重新运行该docker容器时我都不必设置它?
提前致谢!
nuc*_*tus 39
我假设您希望将一个IP分配给docker之外的docker容器.
首先,创建一个新的IP并将其分配给主机的接口(我们假设您的接口名为eth0.
$> ip addr add 10.0.0.99/8 dev eth0
Run Code Online (Sandbox Code Playgroud)
现在,当您启动容器时,请指定该地址并将其链接到docker容器:
$> docker run -i -t --rm -p 10.0.0.99:80:8080 base
Run Code Online (Sandbox Code Playgroud)
-p参数将使docker创建一个iptables NAT规则,该规则将所有与目标10.0.0.99:80匹配的流量与端口8080上的docker容器相对应.
如果您需要自动化该过程并将其扩展出来,请参考以下资源:https://github.com/jpetazzo/pipework
docker文档是一个很好的开始:https://docker.github.io/engine/userguide/networking/
最近我遇到了同样的问题并使用网络容器解决了它:
从这一点开始,网络容器在网络上可用,并将端口路由到服务容器.主要优点是'服务'容器不必知道公共IP,DHCP等.这样,每个正在运行的容器都可以在网络上公开.
为方便起见,我创建了一个可以同时完成所有这些操作的脚本.使公共IP上的运行容器可用如下:
create-network-container.sh webserver ens32
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您需要有一个名为"webserver"的运行容器,以及主机"ens32"上的网络接口.需要该接口才能创建到网络容器的桥.
脚本,更详细的信息和示例可在以下网址获得:https: //github.com/jeroenpeeters/docker-network-containers
| 归档时间: |
|
| 查看次数: |
53697 次 |
| 最近记录: |