Gần đây tôi có cùng một vấn đề và giải quyết nó bằng cách sử Mạng Container :
- Bắt đầu chứa 'dịch vụ' của tôi mà tôi muốn có sẵn trên IP công cộng
- Tạo một 'mạng' mới chứa được liên kết với các serv thùng chứa đá và định tuyến đến các cổng được vùng chứa dịch vụ tiếp xúc. Vùng chứa này sẽ có thêm một giao diện mạng được nối với máy chủ để nó có thể có được một IP từ DHCP.
- Tạo cầu nối mạng từ máy chủ Docker đến vùng chứa bằng cách sử dụng Đường ống của jpetazzo (https://github.com/jpetazzo/pipework)
- Vùng chứa mạng lấy địa chỉ từ DHCP.
Từ điểm này trên vùng chứa mạng có sẵn trên mạng và định tuyến các cổng đến vùng chứa dịch vụ. Ưu điểm chính là thùng chứa 'dịch vụ' không phải biết về IP công khai, DHCP, v.v. Bằng cách này, mọi thùng chứa đang chạy đều có thể được công khai trên mạng.
Để thuận tiện, tôi đã tạo một tập lệnh thực hiện tất cả điều này cùng một lúc. Làm một container chạy sẵn trên một IP nào cũng đơn giản như:
create-network-container.sh webserver ens32
Trong trường hợp này bạn sẽ cần phải có một container chạy gọi là "máy chủ web, và một giao diện mạng trên máy chủ 'ens32'.Giao diện là cần thiết để tạo cầu nối vào vùng chứa mạng.
Các kịch bản, thông tin chi tiết hơn và các ví dụ có sẵn trên: https://github.com/jeroenpeeters/docker-network-containers
Nguồn
2014-11-18 20:02:59
bạn đã xem xét các --net = tùy chọn máy chủ? xem: https://docs.docker.com/articles/networking/#container-networking –
Bạn có ý gì khi gửi các gói dữ liệu đến một cách động? Giả sử rằng API phụ trợ đáp ứng với HTTP, điều gì về việc thiết lập proxy HTTP cũng có thể xử lý các nội dung khác, ví dụ: SSL offloading vv – andi5