2つの別個のDockerコンテナーがZMQ IPCソケットを介して通信することは可能ですか?もしそうなら、これはどのように達成できますか?
例えば:
Docker Container#1 ZMQ応答ソケットを作成して「ipc:// tmp/service_name」にバインドするアプリケーションを実行します。
Docker Container#2 ZMQリクエストソケットを作成して「ipc:// tmp/service_name」に接続するアプリケーションを実行します。
次のコマンドは、2つの別個の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からコンテナ1にpingを実行し、コンテナ1からコンテナ2にpingを実行できます。
--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
PDATE: ZMQ TCPソケットを使用して2つの個別のDockerコンテナ間で通信できますが、IPCソケットを使用して通信することはできません。出来ますか?
ご覧になりました Dockerコンテナー(dockerバージョン1.4.1)との共有メモリー ? IPCが存在するボリュームを共有し、--ipc Host
も設定する必要があるようです。この例では、次のようになります。
# Container #1
docker run -it --name c1 -v /tmp:/tmp --ipc=Host container1
# Container #2
docker run -it --name c2 -v /tmp:/tmp --ipc=Host container2