dockernetworking直接访问容器
我尝试从多个虚拟机使用静态IP迁移到基于容器的解决scheme。
现在我用静态IP使用虚拟机:
我可以ping和telnet我的虚拟机telnet 10.48.0.10 5432
和telnet 10.48.0.11 5432
我想创build一个单一的docker主机,允许我这样做:
如果我可以telnet 172.17.0.2 5432
和telnet 172.17.0.3 5432
那将是非常好的
我试图通过docker来做,因为我想pipe理configuration。
什么是正确的方法来做到这一点? 我应该使用一个容器内的TCP代理来pipe理这个吗?
解决scheme非常简单。
创build一个networking并将其绑定到主机
docker network create --subnet=10.0.0.0/24 -o "com.docker.network.bridge.host_binding_ipv4"="0.0.0.0" mynet
然后在mynet
networking上运行一个容器
docker run -ti --net=mynet --ip=10.0.0.30 busybox
现在从另一台计算机,如果你添加路由到你的docker主机(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
)
如果要从主机或从其他任何可以获取主机的服务器访问容器,则需要将每个容器映射到主机服务器中的其他端口。
docker run -d -p 54321:5432 my_app docker run -d -p 54322:5432 my_app
所以你可以telnet 10.200.0.1 54321
和telnet 10.200.0.1 54322