2017-05-17 40 views
5

Có thể sử dụng hai ngăn chứa Docker riêng biệt để giao tiếp qua ổ cắm IPC ZMQ không? Nếu vậy, làm thế nào điều này có thể đạt được?Giao tiếp IPC giữa các thùng chứa Docker

Ví dụ:

Docker container # 1 thực thi một ứng dụng mà sẽ tạo ra một ổ cắm đáp ứng ZMQ và liên kết với "ipc: // tmp/service_name".

Vùng chứa Docker # 2 thực hiện một ứng dụng tạo ổ cắm yêu cầu ZMQ và kết nối với "ipc: // tmp/service_name".

Các lệnh sau đây được sử dụng để chạy các ứng dụng trong hai container Docker riêng biệt:

// 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 

Sau khi chạy container, tôi không thể thiết lập kết nối ZMQ (IPC). Tuy nhiên, tôi có thể ping chứa 1 từ chứa 2, và ping chứa 2 từ chứa 1.

Tôi cũng đã cố gắng sử dụng lệnh --ipc, nhưng nó đã không giúp đỡ:

// 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 

CẬP NHẬT : Tôi có thể liên lạc giữa hai vùng chứa Docker riêng biệt bằng cách sử dụng ổ cắm TCP ZMQ, nhưng tôi vẫn không thể kết nối bằng ổ cắm IPC. Có thể không?

+1

Bạn đã tự điều tra điều gì. Bạn đã đọc ví dụ [this] (https://torusware.com/blog/2015/04/optimizing-communications-between-html/) bài viết? –

+0

Tại sao bạn không tự mình thử và báo cáo lại lỗi là vì vậy chúng tôi thực sự có gì đó để trợ giúp? –

+0

Có, tôi đã đọc bài viết đó @JeroenHeier. Tôi sẽ đọc lại nó và thử lại xem có cái gì đó mà tôi đang thiếu. – milenko

Trả lời

2

Bạn đã xem Shared Memory with Docker containers (docker version 1.4.1) chưa? Có vẻ như bạn không chia sẻ âm lượng nơi IPC sống và cũng có thể đặt --ipc host. Trong ví dụ của bạn, nó sẽ giống như sau:

# 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 
+0

Điều này đã hiệu quả! Cảm ơn bạn @Andy Shinn – milenko

+1

Tôi đoán việc triển khai chỉ cần chia sẻ/tmp. Không cần phải có '--ipc = host'. Tôi sẽ không chia sẻ máy chủ/tmp cũng như IPC vì lý do bảo mật ... –

+0

Đồng ý @RicardoBranco. Các hoạt động sau cũng hoạt động: 'docker run -it --name c1 -v/tmp container1 docker run -it --name c2 --ipc = container: c1 --volumes-from c1 container2' – milenko

Các vấn đề liên quan