2015-02-06 42 views
7

Sau khi nghiên cứu, kiểm tra và thử nghiệm cẩn thận, tôi chỉ có thể tìm cách kết nối vùng chứa Docker với giao diện đã cho bằng cách chuyển tiếp từ IP /Hải cảng. Điều này có thể được thực hiện bằng cách thêm -p Host-IP:Host-Port:Container-Port vào lệnh docker run.Kết nối vùng chứa Docker với giao diện/thiết bị mạng thay vì địa chỉ IP

Tôi có một ứng dụng nghe chương trình phát sóng UDP (255.255.255.255) và không thể định cấu hình chuyển tiếp theo cách mà vùng chứa của tôi sẽ nhận các chương trình phát đó mà không chuyển tiếp tất cả lưu lượng mạng trên cổng mà tôi quan tâm (không vấn đề thông qua giao diện của nó), nghĩa là: -p Host-Port:Container-Port.

Có thể định cấu hình vùng chứa bằng --net=host và chỉ viết mã của tôi để liên kết với một giao diện nhất định mà tôi đã thực hiện và thử nghiệm, nhưng vẫn đi ngược lại ý tưởng chính của vùng chứa. Mục đích là để có nhiều thùng chứa của cùng một ứng dụng nghe trên các giao diện mạng khác nhau (như trong các thiết bị, không phải địa chỉ).

Bất kỳ ý tưởng nào về cách tôi có thể thực hiện việc này?

EDIT # 1: Sau khi suy nghĩ về điều này, có thể thiết lập cầu qua giao diện được yêu cầu là đủ, nhưng tôi không tin hệ điều hành gửi gói phát sóng qua nó. Hãy theo dõi khi tôi thực hiện nhiều thử nghiệm hơn.

EDIT # 2: Gói được gửi qua cầu nối tốt. Tuy nhiên, cây cầu được cấu hình như cầu nối mặc định Docker. Tôi đã không thể tìm ra cách để chạy container trên các cây cầu khác nhau. Đã thấy một số ghi chú hướng tới việc thiết lập mạng thành --net=none và định cấu hình nó thông qua cài đặt vùng chứa lxc.

+0

tại sao là Docker cầu không đủ tốt? –

+0

Bạn chưa thể định cấu hình cầu docker theo cách tôi có thể chỉ định giao diện mạng nào để đính kèm. Điều đó có nghĩa là tôi không thể có các vùng chứa riêng cho mỗi giao diện mạng. – tryexceptpass

+1

bạn có thể đăng giải pháp của mình không? Tôi cần một cái gì đó tương tự để chạy một thể hiện DHCP bên trong một docker container –

Trả lời

-1

Theo lệnh docker run mặc định xuất bản cổng cho tcp. Cố gắng xác định sử dụng udp:

docker run -p Host-Port:Container-Port/UDB ...

+1

Vấn đề không phải là cổng chuyển tiếp, nó chuyển tiếp dữ liệu từ một giao diện cụ thể. – tryexceptpass

+0

Bạn muốn chuyển tiếp giao diện nào? –

+1

Tôi đang sử dụng từ "giao diện" trong trường hợp này để biểu thị một thiết bị mạng. Nếu tôi có một hệ thống được dual homed và tôi chỉ muốn cung cấp một dịch vụ trên một trong các mạng, tôi đã không tìm thấy một cách để làm điều đó. Chuyển tiếp dữ liệu từ một IP cụ thể không đủ trong trường hợp tôi đang sử dụng các gói broadcast hoặc multicast. – tryexceptpass

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