docker网络直接访问容器

时间:2016-07-25 16:12:58

标签: docker docker-networking

我尝试从使用静态IP的多个VM迁移到基于容器的解决方案。

现在我正在使用带有静态IP的虚拟机:

enter image description here

我可以ping我的虚拟机telnet 10.48.0.10 5432telnet 10.48.0.11 5432

我想创建一个允许我这样做的单一泊坞主机:

enter image description here

如果我可以telnet 172.17.0.2 5432telnet 172.17.0.3 5432

那就太棒了

我尝试通过docker来实现,因为我想管理配置。

这样做的正确方法是什么? 我应该在容器内使用TCP代理来管理吗?

2 个答案:

答案 0 :(得分:1)

解决方案非常简单。

创建网络并将其绑定到主机

docker network create --subnet=10.0.0.0/24 -o "com.docker.network.bridge.host_binding_ipv4"="0.0.0.0" mynet

然后在mynet网络

上运行一个容器
docker run -ti --net=mynet --ip=10.0.0.30 busybox

现在,如果您为此子网的docker host(192.168.2.156)添加路由,则从另一台计算机:

sudo route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.2.156

您可以ping容器(ping 10.0.0.30

答案 1 :(得分:0)

如果要从主机或任何其他可以获取主机的服务器访问容器,则需要将每个容器映射到主机服务器中的其他端口。

docker run -d -p 54321:5432 my_app
docker run -d -p 54322:5432 my_app

所以你可以telnet 10.200.0.1 54321telnet 10.200.0.1 54322