docker 联网直接访问容器
docker networking direct access to container
我尝试从具有静态 ip 的多个 VM 迁移到基于容器的解决方案。
现在我正在使用具有静态 ip 的 VM:
我可以 ping 和远程登录我的虚拟机 telnet 10.48.0.10 5432
和 telnet 10.48.0.11 5432
我想创建一个允许我执行相同操作的 docker 主机 :
如果能telnet 172.17.0.2 5432
和telnet 172.17.0.3 5432
就好了
我尝试通过 docker 来完成,因为我想管理配置。
执行此操作的正确方法是什么?
我应该在容器内使用 TCP 代理来管理它吗?
如果您想从您的主机或任何其他可以获取您的主机的服务器访问容器,您需要将每个容器映射到主机服务器中的不同端口。
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
解决方法很简单。
创建网络并将其绑定到主机
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 主机 (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
)
我尝试从具有静态 ip 的多个 VM 迁移到基于容器的解决方案。
现在我正在使用具有静态 ip 的 VM:
我可以 ping 和远程登录我的虚拟机 telnet 10.48.0.10 5432
和 telnet 10.48.0.11 5432
我想创建一个允许我执行相同操作的 docker 主机 :
如果能telnet 172.17.0.2 5432
和telnet 172.17.0.3 5432
我尝试通过 docker 来完成,因为我想管理配置。
执行此操作的正确方法是什么? 我应该在容器内使用 TCP 代理来管理它吗?
如果您想从您的主机或任何其他可以获取您的主机的服务器访问容器,您需要将每个容器映射到主机服务器中的不同端口。
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
解决方法很简单。
创建网络并将其绑定到主机
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 主机 (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
)