Truy cập proxy của máy chủ từ container Docker dùng mạng bridge
Chọn địa chỉ proxy mà container truy cập được và phân biệt điểm cuối công khai với proxy chạy trên máy chủ Docker.
Với container thông thường dùng mạng bridge, 127.0.0.1 là địa chỉ loopback của chính container. Proxy lắng nghe trên localhost của máy tính xách tay không tự động lắng nghe bên trong mọi container.
Điều này giải thích sự khác biệt thường gặp: cùng một URL proxy hoạt động trong terminal của máy chủ nhưng bị từ chối kết nối bên trong container. Địa chỉ đó chỉ đến điểm cuối mạng khác nhau ở mỗi nơi.
Có thể dùng trực tiếp proxy công khai
Nếu điểm cuối lấy từ một dịch vụ hoặc danh sách proxy HTTP thực sự là IP công khai truy cập được, hãy truyền địa chỉ đó cho ứng dụng thay vì đổi thành localhost:
docker run --rm \
-e HTTP_PROXY=http://203.0.113.10:8080 \
-e HTTPS_PROXY=http://203.0.113.10:8080 \
your-image
Thay địa chỉ dùng minh họa trong tài liệu và image. Chương trình trong image vẫn phải hỗ trợ các biến môi trường này; Docker không biến mọi socket thành yêu cầu qua proxy chỉ vì các biến tồn tại.
Nếu proxy chạy trên máy chủ Docker
Docker Desktop cung cấp host.docker.internal để truy cập địa chỉ nội bộ của máy chủ. Trong cấu hình Engine gốc được hỗ trợ, ánh xạ máy chủ có thể cung cấp tên quy ước này:
docker run --rm \
--add-host host.docker.internal=host-gateway \
-e HTTP_PROXY=http://host.docker.internal:8080 \
-e HTTPS_PROXY=http://host.docker.internal:8080 \
your-image
Thao tác này thay đổi phân giải tên; đây không phải lệnh chuyển tiếp cổng. Trên Linux gốc, dịch vụ chỉ bind vào loopback của máy chủ vẫn có thể không truy cập được qua địa chỉ bridge của máy chủ. Trình lắng nghe, tường lửa và tuyến của container phải cho phép kết nối. Nếu thay đổi trình lắng nghe, hãy giới hạn ở các máy khách cần truy cập thay vì tạo proxy mở không có xác thực.
Kiểm tra từ cùng nơi với ứng dụng
Kết quả curl trên máy chủ chỉ kiểm tra tuyến của máy chủ. Gửi yêu cầu liên quan từ môi trường container và kiểm tra xem nó có tới điểm cuối dự định hay không.
“Máy chủ” còn có nghĩa là máy chạy Docker Engine. Với Engine từ xa, đó không nhất thiết là máy tính xách tay của bạn. Vì vậy, IP loopback sao chép từ ứng dụng máy tính cục bộ đặc biệt khó có thể hoạt động nguyên trạng trên bộ dựng hoặc máy chủ từ xa.
Tách riêng vấn đề tải image: daemon tải image trước khi ứng dụng có thể dùng môi trường nêu trên.