Làm cách nào tôi có thể cho phép tất cả các container docker sử dụng proxy của mình?


18

Tôi đang chạy docker trên Debian Jessie, đằng sau một proxy công ty. Để có thể tải xuống hình ảnh docker, tôi cần thêm phần sau vào/etc/defaults/docker

http_proxy="http://localhost:3128/"

Tôi có thể xác nhận rằng điều này hoạt động.

Tuy nhiên, để có thể truy cập interwebz từ trong vùng chứa của tôi, tôi cần bắt đầu tất cả các phiên với --net hostvà sau đó thiết lập các biến env này:

export http_proxy=http://localhost:3128/
export https_proxy=https://localhost:3128/
export ftp_proxy=${http_proxy}

Lý tưởng nhất, tôi muốn container không cần mạng máy chủ và không biết về proxy (tức là tất cả các cuộc gọi đi đến cổng 20, 80, 443 trong container đều đi qua cổng proxy của máy chủ). Điều đó có thể không?

Không có điều đó, có thể có một thiết lập trang web, điều này sẽ đảm bảo rằng các biến env này được đặt cục bộ nhưng không bao giờ được xuất như một phần của hình ảnh?

CẬP NHẬT : Tôi biết tôi có thể vượt qua những điều này với --env http_proxy=...vv, nhưng đó là khó khăn. Tôi muốn nó hoạt động cho tất cả người dùng trên hệ thống mà không phải sử dụng bí danh.

Câu trả lời:


5

Xem câu trả lời SO này :

Máy chủ lưu trữ chạy một container chạy proxy (mực, trong trường hợp này) có thể thực hiện ủy quyền minh bạch. Container đó có một số quy tắc iptables lưu lượng NAT vào máy chủ proxy - điều này có nghĩa là container cần chạy ở chế độ đặc quyền.

Máy chủ lưu trữ cũng chứa (và đây là ma thuật) các mục trong bảng lộ trình ip định tuyến lại tất cả lưu lượng truy cập từ bất kỳ vùng chứa nào ngoại trừ proxy được dành cho cổng 80, thông qua vùng chứa proxy.

Điều cuối cùng về cơ bản có nghĩa là đối với lưu lượng truy cập cổng 80, tuyến đường từ container đến phần còn lại của thế giới sẽ đi qua vùng chứa proxy - tạo cơ hội cho NAT và proxy minh bạch.

https://github.com/silarsis/docker-proxy

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.