我想连接在不同机器上运行的两个docker容器,而docker swarm。通过端口22和docker网络能否实现这一目标?
在同一节点中,我可以使用本地ip和网桥/ MacVlan网络进行通信
答案 0 :(得分:0)
如果您尝试访问其他docker计算机,最好使用docker swarm,因为它将在所有连接的docker守护程序上创建覆盖网络。如果您不想使用docker swarm,则可以将主机网络用于两个docker守护程序。它将消除主机和容器之间的网络隔离,以便您可以使用主机IP本身访问容器。
答案 1 :(得分:0)
如果您确保使用docker run -p
通过主机发布每个容器的网络端口,并使用主机的 DNS名称或IP地址在服务之间进行连接,则此方法很好。 / p>
server1$ docker run -p 12345:22 -e CONTAINER2_HOST=server2 -e CONTAINER2_PORT=24680 imagename
server2$ docker run -p 24680:22 -e CONTAINER1_HOST=server1 -e CONTAINER1_PORT=12345 imagename
一旦离开当前系统(假设您没有使用专用的容器协调器),您将看不到其他系统的“工作方式”。从服务器2的角度来看,http://server1:12345
到达容器1中的服务;但是它不知道或不在乎该服务是在Docker或VM中运行还是直接在主机上运行。