我对 docker 网络了解不多,我有 2 个不同的容器,而它们被放置在两台不同的机器上。在这种情况下,我有 两个树莓派 其中一个是 服务器 另一个是 客户 .
两者都使用 CoAP 协议(protocol)来交换消息。无论如何,客户端需要服务器的 ip 作为客户端脚本的参数,例如 --
python src/client.py <server_ip>
我检查了服务器容器并获得了私有(private) ip——
172.18.0.2
这是服务器和客户端的 docker-compose 文件——
docker-compose.yml(服务器)
version: '3'
services:
server:
build: ./
image: img_server:v1
ports:
- 5683:5683/udp
volumes:
- ./:/usr/app
command: ["python", "src/server.py"]
docker-compose.yml(客户端)
version: '3'
services:
client:
build: ./
image: img_client:v1
environment:
SERVER_IP: "127.0.0.1"
ports:
- 61616:61616/udp
volumes:
- ./:/usr/app
command: ["sh", "-c", "python src/client.py $SERVER_IP"]
我无法建立连接,因为容器(服务器和客户端)在不同的机器上运行。
问题:是否可以在服务器和客户端之间建立连接,两者都放置在单独的 docker 守护程序(单独的机器)中?如果是这样,那么我该怎么做?
最佳答案
就像服务没有在 Docker 中运行一样:使用运行服务的物理主机的 IP 地址配置客户端。 (确保您已发布适当的 ports:
,以便他们可以访问。)
你不应该docker inspect
一个容器来查找它的 IP 地址。有很多常见的情况,包括这个,地址是完全没用的,总有更好的方法可以到达容器。
关于docker - 如何从另一个都在不同机器上运行的容器访问一个容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109966/