【发布时间】:2017-10-17 03:54:46
【问题描述】:
两个独立的 Docker 容器是否可以通过 ZMQ IPC 套接字进行通信?如果可以,如何实现?
例如:
Docker Container #1 执行创建 ZMQ 响应套接字并绑定到“ipc://tmp/service_name”的应用程序。
Docker Container #2 执行创建 ZMQ 请求套接字并连接到“ipc://tmp/service_name”的应用程序。
以下命令用于在两个独立的 docker 容器中运行应用程序:
// Run container #1 (binds to "ipc://tmp/service_name")
docker run --name c1 -it container1
// Run container #2 (connects to "ipc://tmp/service_name")
docker run -it --link c1:container1 --name c2 container2
运行容器后,我无法建立 ZMQ (IPC) 连接。但是,我可以从容器 2 ping 容器 1,并从容器 1 ping 容器 2。
我也尝试使用 --ipc 命令,但没有帮助:
// Run container #1 (binds to "ipc://tmp/service_name")
docker run --name c1 --ipc=host -it container1
// Run container #2 (connects to "ipc://tmp/service_name")
docker run -it --link c1:container1 --ipc=container:c1 --name c2 container2
更新: 我能够使用 ZMQ TCP 套接字在两个独立的 Docker 容器之间进行通信,但仍然无法使用 IPC 套接字进行通信。有可能吗?
【问题讨论】:
-
你自己调查了什么。你读过例如this 的文章吗?
-
您为什么不自己尝试一下,然后报告错误是什么,这样我们才能真正提供帮助?
-
是的,我确实读过 @JeroenHeier 的那篇文章。我将重新阅读它并再试一次,看看是否有我遗漏的东西。
-
我更新了原始问题以显示我到目前为止所做的尝试,@AndyShinn