使用docker网络(ssh)在不同机器上运行的两个docker容器之间进行通信

使用docker网络(ssh)在不同机器上运行的两个docker容器之间进行通信,docker,Docker,我想连接两个运行在不同机器上的docker容器,没有docker swarm。是否可以通过端口22和docker网络实现这一点 在同一个节点中,我能够使用本地ip和网桥/MAVLAN网络进行通信如果您试图访问不同的docker机器,最好使用docker swarm,因为它将在所有连接的docker守护进程上创建覆盖网络。如果您不想使用docker swarm,您可以为这两个docker守护进程使用主机网络。它将删除主机和容器之间的网络隔离,以便您可以使用主机IP本身访问容器 如果您确保使用doc

我想连接两个运行在不同机器上的docker容器,没有docker swarm。是否可以通过端口22和docker网络实现这一点


在同一个节点中,我能够使用本地ip和网桥/MAVLAN网络进行通信

如果您试图访问不同的docker机器,最好使用docker swarm,因为它将在所有连接的docker守护进程上创建覆盖网络。如果您不想使用docker swarm,您可以为这两个docker守护进程使用主机网络。它将删除主机和容器之间的网络隔离,以便您可以使用主机IP本身访问容器

如果您确保使用
docker run-p
通过主机发布每个容器的网络端口,并使用主机的DNS名称或IP地址在服务之间进行连接,则此操作可以正常工作

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

一旦您离开当前系统(假设您没有使用专用的容器编排器),您就看不到其他系统的“工作方式”。从server2的角度来看,
http://server1:12345
到达container1中的服务;但它不知道或不关心该服务是在Docker或VM中运行,还是直接在主机上运行。

假设一台机器上运行3个容器,另一台机器上运行3个容器。我想从一个容器到另一个容器执行ssh(端口22)。如果没有专用ip,这是可能的。如果我使用的是热网络,它不会有一个私有ip,对吗?