Proxy Docker: Cấu Hình Container Và Docker Daemon
Proxy Docker giúp Docker daemon kéo image và cho ứng dụng trong container truy cập Internet qua máy chủ trung gian. Trong bài này, ProxyVN hướng dẫn anh em phân biệt ba lớp cần cấu hình, viết đúng daemon.json, systemd, build argument, biến runtime, Docker Compose, NO_PROXY và cách xử lý lỗi thường gặp, kèm lệnh kiểm tra cho từng lớp.
Tổng quan các lớp hoạt động của Proxy Docker
Proxy Docker là cách định tuyến lưu lượng từ Docker daemon, tiến trình build hoặc ứng dụng trong container qua một proxy. Giải pháp này thường gặp trong mạng doanh nghiệp có tường lửa, máy chủ bị giới hạn đường ra Internet, hoặc khi ứng dụng cần một IP đầu ra cố định.

Docker Daemon
Ba lớp mạng khác nhau
Docker không chỉ có một luồng mạng. Daemon, môi trường build và ứng dụng trong container chạy ở các ngữ cảnh khác nhau. Vì vậy, đặt proxy ở một nơi chưa có nghĩa mọi tác vụ đều đi qua proxy.
- Docker daemon: kết nối tới Docker Hub hoặc registry khác khi chạy docker pull, và giao tiếp với các node trong Docker Swarm.
- Build-time: các lệnh như apt-get, pip, npm cần Internet khi Docker đang tạo image.
- Runtime: ứng dụng đã chạy trong container gửi yêu cầu HTTP hoặc HTTPS ra dịch vụ bên ngoài.
Ranh giới giữa cấu hình client và daemon
Theo tài liệu proxy dành cho Docker CLI, cấu hình trong ~/.docker/config.json phục vụ container và build, nhưng không cấu hình proxy cho Docker Engine. Đây là ranh giới kỹ thuật nhiều người bỏ qua.
Tình trạng "đã cài proxy nhưng Docker vẫn không vào mạng" thường đến từ việc cấu hình đúng thông số nhưng sai lớp.
Nhớ được ba lớp này, anh em sẽ chẩn đoán lỗi nhanh hơn nhiều ở các phần sau.
Các trường hợp nên cấu hình Proxy Docker
Docker cần kết nối ra ngoài trong nhiều giai đoạn. Khi đường trực tiếp bị chặn hoặc không phù hợp chính sách, proxy tạo một lối ra có kiểm soát.

Cấu hình Proxy Docker
Tình huống phổ biến
- Mạng doanh nghiệp yêu cầu mọi lưu lượng Internet đi qua proxy nội bộ.
- VPS hoặc máy chủ trong vùng mạng kín không được kết nối trực tiếp.
- Daemon không tải được image từ Docker Hub hay registry bên ngoài.
- Lệnh cài package thất bại trong lúc build dù máy chủ vẫn vào mạng.
- Ứng dụng trong container cần dùng một IP đầu ra ổn định.
- Đội vận hành muốn tách lưu lượng ra Internet khỏi truy cập dịch vụ nội bộ.
Container chạy công cụ thu thập dữ liệu
Một nhóm nhu cầu riêng là container chạy scraper, trình duyệt headless hoặc workflow tự động. Ở đây proxy không chỉ là lối ra mạng mà còn quyết định IP mà website đích nhìn thấy. Bài web scraping proxy là gì giải thích vai trò của proxy trong thu thập dữ liệu. Nếu container chạy Puppeteer hoặc Selenium, cách gắn proxy ngay trong code có ở bài cách sử dụng proxy trong Puppeteer và bài cài đặt Selenium Python với proxy.
Việc dùng proxy vẫn phải tuân thủ chính sách của hệ thống đích và điều khoản của website.
Chuẩn bị thông tin trước khi cài Proxy Docker
Chuẩn bị đúng dữ liệu giúp anh em không phải sửa cấu hình nhiều lần. Trước hết, xác nhận proxy hỗ trợ HTTP hoặc HTTPS, vì cấu hình proxy của Docker daemon dùng hai giao thức này.
Danh sách thông tin cần có
- Địa chỉ máy chủ proxy và cổng kết nối.
- Giao thức, ví dụ http:// hoặc https://.
- Tên đăng nhập và mật khẩu nếu proxy yêu cầu xác thực.
- Danh sách domain, IP hoặc mạng nội bộ cần đưa vào NO_PROXY.
- Môi trường đang dùng: Docker Engine, Docker Desktop hay rootless mode.
- Phạm vi áp dụng: pull image, build image, runtime hoặc cả ba.
Định dạng URL proxy có xác thực
URL proxy có xác thực có dạng http://username:password@proxy-host:port. Nếu mật khẩu chứa @, #, % hoặc ký tự đặc biệt khác, phải mã hóa URL trước khi chèn, ví dụ @ thành %40. Có thể mã hóa nhanh bằng Python:
python3 -c "import urllib.parse; print(urllib.parse.quote('mat@khau#1', safe=''))"
Kết quả là mat%40khau%231. Hãy lưu bản sao cấu hình hiện tại trước khi sửa, vì JSON sai có thể khiến daemon không khởi động. Đồng thời, đừng đưa thông tin đăng nhập proxy vào kho mã nguồn. Nếu proxy hỗ trợ cả hai kiểu xác thực, bài xác thực proxy bằng IP whitelist hay user password giúp anh em chọn kiểu phù hợp với máy chủ Docker.
Cấu hình Proxy Docker cho Docker daemon
Docker khuyến nghị cấu hình daemon trực tiếp bằng daemon.json trên Docker Engine bản mới. Cách này rõ ràng, dễ kiểm tra và được ưu tiên hơn biến môi trường.
Thiết lập qua daemon.json
Mở hoặc tạo file /etc/docker/daemon.json, thêm khối proxies như sau:
{
"proxies": {
"http-proxy": "http://username:password@proxy-host:3128",
"https-proxy": "http://username:password@proxy-host:3128",
"no-proxy": "localhost,127.0.0.1,.example.internal"
}
}
Nếu file đã có thiết lập khác, gộp khối proxies vào object hiện tại, không tạo object thứ hai. Sau khi lưu, khởi động lại daemon và thử tải một image nhỏ:
sudo systemctl restart docker
docker pull alpine
docker info | grep -i proxy
Lệnh docker info hiển thị dòng HTTP Proxy, HTTPS Proxy và No Proxy mà daemon đang dùng, với mật khẩu được che. Theo hướng dẫn cấu hình proxy cho Docker daemon, daemon dùng proxy để truy cập registry và các node Swarm, và cấu hình trong daemon.json được ưu tiên hơn biến môi trường.
Thiết lập qua systemd
Với bản Docker cũ chưa hỗ trợ khối proxies, hoặc khi hệ thống quản lý Docker bằng systemd theo chuẩn riêng, anh em dùng drop-in file:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
Nội dung file:
[Service]
Environment="HTTP_PROXY=http://username:password@proxy-host:3128"
Environment="HTTPS_PROXY=http://username:password@proxy-host:3128"
Environment="NO_PROXY=localhost,127.0.0.1,.example.internal"
Sau đó tải lại systemd, khởi động lại Docker và kiểm tra biến đã nạp:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl show --property=Environment docker
Với rootless mode, file nằm trong ~/.config/systemd/user/docker.service.d/, lệnh systemctl dùng cờ --user và không dùng sudo.
Lưu ý riêng với Docker Desktop
Docker Desktop bỏ qua thiết lập proxy trong daemon.json. Anh em cấu hình tại Settings, mục Resources, phần Proxies theo tài liệu cài đặt Docker Desktop. Có thể chọn dùng proxy hệ thống hoặc nhập thủ công "Web Server (HTTP)" và "Secure Web Server (HTTPS)", sau đó bấm "Apply & restart".
Vì vậy, hãy xác định đúng sản phẩm đang dùng trước khi sửa file.
Cấu hình Proxy Docker trong giai đoạn build
Proxy của daemon chỉ giúp daemon lấy base image. Nó không tự chuyển vào các lệnh RUN apt-get, pip install hay npm install trong lúc build. Đây là lý do docker pull thành công nhưng docker build vẫn báo timeout.
Truyền proxy bằng build argument
Docker hỗ trợ sẵn các build argument HTTP_PROXY, HTTPS_PROXY, NO_PROXY, nên không cần khai báo ARG trong Dockerfile chỉ để phục vụ build.
docker build \
--build-arg HTTP_PROXY=http://username:password@proxy-host:3128 \
--build-arg HTTPS_PROXY=http://username:password@proxy-host:3128 \
--build-arg NO_PROXY=localhost,127.0.0.1,.example.internal \
-t my-app:latest .
Cấu hình qua Docker client
Nếu thường xuyên build nhiều dự án, thêm cấu hình vào ~/.docker/config.json để Docker tự truyền proxy cho mọi lần build và mọi container mới:
{
"proxies": {
"default": {
"httpProxy": "http://username:password@proxy-host:3128",
"httpsProxy": "http://username:password@proxy-host:3128",
"noProxy": "localhost,127.0.0.1,.example.internal"
}
}
}
Cấu hình có hiệu lực ngay sau khi lưu nhưng chỉ áp dụng cho build và container tạo mới.
Không dùng ENV để đặt proxy cho build
Docker lưu ý không dùng ENV trong Dockerfile để đặt proxy, vì giá trị sẽ nằm lại trong image và mọi container tạo từ image đó, kể cả khi đẩy image lên registry. Với bí mật trong quá trình build, Docker khuyến nghị dùng secret mount hoặc SSH mount thay cho ARG và ENV.
Tóm lại, tách proxy build khỏi Dockerfile và truyền nó tại thời điểm build. Cách làm này giữ image sạch, dùng được ở mọi môi trường, và không ai lấy được thông tin proxy chỉ bằng việc tải image về rồi xem lịch sử các lớp.
Cấu hình Proxy Docker cho container đang chạy
Ở runtime, ứng dụng trong container là đối tượng trực tiếp gửi yêu cầu ra ngoài. Anh em cần đưa biến môi trường proxy vào container khi khởi chạy.
Dùng docker run
Cách ngắn gọn nhất là dùng cờ -e:
docker run --rm \
-e HTTP_PROXY=http://username:password@proxy-host:3128 \
-e HTTPS_PROXY=http://username:password@proxy-host:3128 \
-e NO_PROXY=localhost,127.0.0.1,.example.internal \
my-app:latest
Có thể truyền cả biến viết hoa và viết thường, vì không có một chuẩn chung về cách mọi thư viện đọc biến proxy. Ví dụ, cURL đọc http_proxy viết thường cho HTTP. Chi tiết về cách cURL xử lý proxy có trong bài cURL proxy là gì.
Dùng file biến môi trường
Với nhiều giá trị, file .env giúp lệnh chạy gọn hơn:
HTTP_PROXY=http://username:password@proxy-host:3128
HTTPS_PROXY=http://username:password@proxy-host:3128
NO_PROXY=localhost,127.0.0.1,.example.internal
docker run --env-file .env my-app:latest
Không commit .env nếu chứa tài khoản proxy, thêm nó vào .gitignore ngay từ đầu. Proxy cũng chỉ có tác dụng khi ứng dụng tôn trọng biến môi trường tương ứng.
Ứng dụng không đọc biến môi trường
Một số thư viện bỏ qua HTTP_PROXY, ví dụ client HTTP tự viết hoặc trình duyệt headless. Khi đó phải truyền proxy trong code. Với Python requests, thư viện tự đọc biến môi trường; với Playwright, phải khai báo proxy khi khởi tạo trình duyệt.
Cấu hình Proxy Docker trong Docker Compose
Docker Compose phù hợp khi dự án có nhiều dịch vụ. Anh em có thể chỉ cấp proxy cho dịch vụ cần ra Internet thay vì áp dụng cho toàn bộ stack.

Proxy cho Docker Compose
Cấu hình runtime cơ bản
services:
scraper:
image: my-scraper:latest
environment:
HTTP_PROXY: ${HTTP_PROXY}
HTTPS_PROXY: ${HTTPS_PROXY}
NO_PROXY: ${NO_PROXY}
restart: unless-stopped
api:
image: my-api:latest
Trong file .env đặt cạnh file Compose:
HTTP_PROXY=http://username:password@proxy-host:3128
HTTPS_PROXY=http://username:password@proxy-host:3128
NO_PROXY=localhost,127.0.0.1,api,.example.internal
Chú ý NO_PROXY có thêm "api", tên dịch vụ nội bộ, để scraper gọi api trực tiếp trong mạng Compose thay vì vòng qua proxy.
Proxy cho cả build và runtime
Nếu dịch vụ cũng cần proxy lúc build, bổ sung build.args:
services:
app:
build:
context: .
args:
HTTP_PROXY: ${HTTP_PROXY}
HTTPS_PROXY: ${HTTPS_PROXY}
NO_PROXY: ${NO_PROXY}
environment:
HTTP_PROXY: ${HTTP_PROXY}
HTTPS_PROXY: ${HTTPS_PROXY}
NO_PROXY: ${NO_PROXY}
Hai khối phục vụ hai thời điểm khác nhau: build.args dùng khi tạo image, environment có mặt khi container chạy. Anh em kiểm tra cấu hình đã nội suy bằng docker compose config, lưu ý lệnh này có thể in cả thông tin đăng nhập ra màn hình.
Workflow tự động trong Compose
Nhiều đội chạy n8n hoặc Airflow bằng Compose và cần proxy cho các node gọi ra ngoài. Cách gắn proxy theo từng workflow có ở bài proxy cho n8n, còn bài proxy Apache Airflow hướng dẫn cho pipeline dữ liệu.
Thiết lập NO_PROXY trong Proxy Docker
NO_PROXY xác định các host phải kết nối trực tiếp. Đây không phải phần phụ: cấu hình thiếu có thể khiến registry nội bộ, API nội bộ hoặc dịch vụ giữa các container bị đẩy qua proxy và lỗi.
Danh sách thường gặp
- localhost, 127.0.0.1 và ::1.
- Domain của private registry.
- Domain nội bộ như .corp hoặc .example.internal.
- IP, subnet hoặc host kèm cổng cần đi trực tiếp.
- Tên dịch vụ trong mạng Compose nếu ứng dụng gọi nhau qua service name.
Cú pháp và khác biệt giữa các ứng dụng
Ví dụ một giá trị đầy đủ:
NO_PROXY=localhost,127.0.0.1,::1,registry.example.internal,.example.internal,10.0.0.0/8
Docker cho phép khai báo IP prefix, domain và cổng trong cấu hình daemon. Tuy nhiên, cách diễn giải giữa các ứng dụng khác nhau: có thư viện hiểu dải CIDR, có thư viện không. Hãy kiểm thử từng host quan trọng thay vì sao chép một danh sách chung. Bài NO_PROXY là gì giải thích chi tiết cú pháp và các trường hợp ngoại lệ.
Proxy Docker trong pipeline CI/CD
Pipeline CI/CD là nơi Proxy Docker hay gây lỗi nhất, vì máy chạy job thường là máy riêng, không kế thừa cấu hình của máy phát triển. Mỗi hệ thống CI có cách truyền biến riêng, nhưng nguyên tắc chung giống nhau: lưu thông tin proxy ở biến bí mật và truyền vào đúng lớp.
GitHub Actions với runner tự quản lý
Với runner tự cài trong mạng doanh nghiệp, đặt biến HTTP_PROXY, HTTPS_PROXY, NO_PROXY trong file .env của thư mục runner để chính runner ra được Internet. Sau đó, truyền proxy cho bước build bằng build argument lấy từ secret.
- name: Build image
run: |
docker build \
--build-arg HTTP_PROXY=${{ secrets.HTTP_PROXY }} \
--build-arg HTTPS_PROXY=${{ secrets.HTTP_PROXY }} \
--build-arg NO_PROXY=localhost,127.0.0.1 \
-t my-app:${{ github.sha }} .
GitHub tự che giá trị secret trong log, nhưng anh em vẫn nên tránh in biến proxy ra màn hình trong các bước kiểm tra.
GitLab Runner dùng Docker executor
Với GitLab Runner, có hai chỗ cần proxy: tiến trình runner và các container job. Phần runner cấu hình qua systemd như Docker daemon. Phần job truyền qua biến CI/CD ở cấp dự án hoặc nhóm, đánh dấu "Masked" để không lộ trong log. Nếu job dùng dịch vụ Docker-in-Docker, daemon bên trong cũng cần cấu hình proxy riêng.
Lỗi hay gặp trong CI
Lỗi phổ biến nhất là job chạy được trên máy phát triển nhưng timeout trên CI, vì máy CI không có ~/.docker/config.json chứa proxy. Cách xử lý là luôn truyền proxy tường minh trong file pipeline thay vì dựa vào cấu hình máy.
Proxy Docker với Kubernetes và containerd
Khi chuyển từ Docker sang Kubernetes, nhiều cụm dùng containerd làm runtime thay vì Docker Engine. Lúc này daemon.json không còn tác dụng, và proxy phải đặt cho containerd.
Cấu hình proxy cho containerd
containerd cũng chạy bằng systemd nên dùng drop-in file tương tự Docker, đặt tại thư mục containerd.service.d:
sudo mkdir -p /etc/systemd/system/containerd.service.d
printf '[Service]\nEnvironment="HTTP_PROXY=http://proxy-host:3128"\nEnvironment="HTTPS_PROXY=http://proxy-host:3128"\nEnvironment="NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,.svc,.cluster.local"\n' | sudo tee /etc/systemd/system/containerd.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart containerd
NO_PROXY trong cụm Kubernetes
Với Kubernetes, NO_PROXY phải gồm dải IP của pod, dải IP của service, tên miền nội bộ .svc và .cluster.local. Thiếu các giá trị này, các thành phần trong cụm sẽ gọi nhau qua proxy và lỗi hàng loạt. Đây là chi tiết dễ bỏ sót nhất khi dựng cụm sau proxy doanh nghiệp.
Proxy cho ứng dụng trong pod
Ứng dụng trong pod nhận proxy qua biến môi trường khai báo trong manifest, giống docker run. Với nhiều ứng dụng, có thể gom biến proxy vào một ConfigMap hoặc Secret dùng chung.
Bảo mật thông tin Proxy Docker
Thông tin đăng nhập proxy là bí mật, và Docker có nhiều chỗ khiến nó vô tình bị lộ. Vài nguyên tắc dưới đây giúp hạn chế rủi ro.
- Không dùng ENV trong Dockerfile cho proxy, vì giá trị nằm lại trong image.
- Không commit file .env hoặc config.json có chứa mật khẩu proxy.
- Cẩn thận với docker compose config và docker inspect, vì hai lệnh này in biến môi trường ra màn hình.
- Ưu tiên whitelist IP cho máy chủ có IP cố định, khi đó URL proxy không cần chứa mật khẩu.
- Đổi mật khẩu proxy định kỳ và ngay khi nghi ngờ bị lộ.
Với đội nhiều người, nên có một người phụ trách thông tin proxy và lưu ở công cụ quản lý bí mật chung thay vì gửi qua tin nhắn.
Kiểm tra Proxy Docker đã hoạt động đúng
Cấu hình xong cần kiểm tra từng lớp riêng. Cách nhanh nhất là dùng một trang trả về IP, so với IP proxy được cấp.
Kiểm tra daemon
Chạy docker pull một image nhỏ và xem docker info. Nếu pull thành công và docker info hiện đúng proxy, lớp daemon đã ổn.
Kiểm tra build
Tạo một Dockerfile tạm có bước gọi ra ngoài, rồi build với proxy:
FROM alpine
RUN wget -qO- https://api.ipify.org && echo
docker build --no-cache --progress=plain -t test-proxy .
IP in ra trong log build phải là IP proxy. Nếu là IP máy chủ, build chưa đi qua proxy.
Kiểm tra runtime
Chạy một container tạm và gọi cùng trang:
docker run --rm -e HTTPS_PROXY=http://username:password@proxy-host:3128 curlimages/curl -s https://api.ipify.org
docker exec ten_container env | grep -i proxy
Lệnh thứ hai kiểm tra biến proxy bên trong một container đang chạy. Nếu biến có nhưng ứng dụng vẫn không kết nối, vấn đề nằm ở thư viện của ứng dụng.
Cách chọn proxy phù hợp cho Proxy Docker
Lựa chọn proxy nên dựa trên kiểu lưu lượng. Với pull image hoặc pipeline CI/CD, tốc độ, băng thông và độ ổn định quan trọng hơn khả năng đổi IP. Với container kiểm thử nội dung theo khu vực, vị trí IP lại là yếu tố chính.
Tiêu chí cần ưu tiên
- Độ ổn định: kết nối ít gián đoạn trong suốt quá trình tải image hoặc cài dependency.
- Băng thông: đủ cho image lớn và số job chạy đồng thời.
- Giao thức: tương thích HTTP hoặc HTTPS với lớp Docker đang cấu hình.
- Xác thực: hỗ trợ user, password hoặc whitelist IP theo hạ tầng hiện tại.
- Vị trí IP: đúng khu vực nếu ứng dụng có nhu cầu kiểm thử theo vị trí.
- Hỗ trợ kỹ thuật: có người hỗ trợ khi proxy mất kết nối hoặc tool lỗi.
Proxy datacenter hay dân cư
Anh em có thể mua proxy tại ProxyVN để gắn cho container hoặc Docker daemon, mỗi proxy có user, password riêng.
Khắc phục lỗi thường gặp với Proxy Docker
Khi lỗi xảy ra, hãy xác định lớp gặp sự cố trước. Cách này hiệu quả hơn thay đồng thời daemon, Dockerfile và Compose.

Khắc phục lỗi Proxy Docker
Docker pull vẫn báo timeout
Proxy có thể mới chỉ được export trong terminal, còn daemon không kế thừa môi trường đó. Hãy kiểm tra daemon.json hoặc systemd drop-in, và chạy docker info xem dòng HTTP Proxy. Với Docker Desktop, kiểm tra phần Proxies trong giao diện.
Build không tải được package
Pull image thành công nhưng apt-get, pip hoặc npm lỗi nghĩa là proxy daemon đã hoạt động còn build chưa được cấu hình. Hãy truyền --build-arg, dùng build.args trong Compose hoặc cấu hình ~/.docker/config.json.
Container không truy cập được Internet
Kiểm tra biến trong container bằng docker exec. Nếu biến đã có nhưng ứng dụng vẫn lỗi, xem thư viện có hỗ trợ proxy qua biến môi trường hay cần cấu hình riêng. Đồng thời kiểm tra DNS, firewall và chứng chỉ.
Dịch vụ nội bộ bị chuyển qua proxy
Đây thường là lỗi NO_PROXY. Thêm domain, IP, subnet hoặc service name nội bộ rồi tạo lại container để biến mới có hiệu lực, vì restart container cũ không nạp lại biến.
Proxy xác thực thất bại
Ký tự đặc biệt trong mật khẩu làm URL bị phân tích sai. Hãy URL-encode thông tin xác thực, và kiểm tra proxy dùng whitelist IP hay user, password. Lỗi 407 được giải thích kỹ trong bài sửa lỗi 407 Proxy Authentication Required.
Lỗi chứng chỉ x509
Proxy doanh nghiệp có thể kiểm tra lưu lượng TLS bằng chứng chỉ nội bộ. Khi đó, máy chủ hoặc container cần tin cậy CA phù hợp. Với registry, đặt chứng chỉ vào /etc/docker/certs.d/ten-registry/ca.crt. Với container, sao chép CA vào image và chạy update-ca-certificates. Không nên tắt xác minh TLS chỉ để bỏ qua lỗi.
Chẩn đoán theo thứ tự daemon, build, runtime và NO_PROXY giúp thu hẹp nguyên nhân nhanh hơn.
Kinh nghiệm vận hành Proxy Docker ổn định
Một tình huống thường gặp: đội kỹ thuật thấy docker pull chạy được và kết luận proxy đã xong. Đến bước build, lệnh cài package lại timeout. Sau đó, ứng dụng lên container nhưng không gọi được API bên ngoài. Ba lỗi cùng biểu hiện nhưng thuộc ba lớp khác nhau.
Quy trình triển khai gọn
- Kiểm tra daemon bằng một lệnh pull image nhỏ và docker info.
- Kiểm tra build bằng một bước gọi ra ngoài trong Dockerfile tạm.
- Kiểm tra runtime từ chính container ứng dụng.
- Kiểm tra từng dịch vụ nội bộ nằm trong NO_PROXY.
- Ghi lại file cấu hình, phạm vi áp dụng và người quản lý thông tin xác thực.
Đồng bộ giữa các môi trường
Đặt tên biến nhất quán giữa máy phát triển, CI/CD và máy chủ. Trong CI/CD, lưu thông tin proxy ở phần biến bí mật của hệ thống CI thay vì ghi vào file cấu hình. Bài kiểm tra có giá trị nhất là bài chạy tại đúng lớp đang tạo lưu lượng.
Câu hỏi thường gặp về Proxy Docker
Proxy Docker có hỗ trợ SOCKS5 không?
Daemon chủ yếu dùng HTTP và HTTPS proxy. Một số ứng dụng trong container đọc được socks5:// qua biến môi trường, nhưng tùy thư viện. Muốn chắc, dùng proxy HTTP cho Docker.
Đổi proxy có cần restart Docker không?
Với daemon, có: phải restart dịch vụ Docker. Với container, phải tạo lại container để nạp biến mới. Với config.json của client, chỉ áp dụng cho build và container tạo sau đó.
Có nên đặt proxy trong Dockerfile bằng ENV không?
Không nên, vì giá trị nằm lại trong image và có thể lộ thông tin đăng nhập khi đẩy image lên registry.
Vì sao docker pull qua proxy chậm hơn bình thường?
Image lớn đi qua proxy chịu thêm độ trễ và giới hạn băng thông của proxy. Nếu chỉ cần tải image, nên dùng proxy datacenter băng thông lớn, hoặc dựng registry mirror nội bộ để các máy trong mạng tải từ mirror thay vì ra Internet mỗi lần.
Docker Desktop trên Windows cấu hình proxy ở đâu?
Trong Settings, mục Resources, phần Proxies. Docker Desktop không đọc khối proxies trong daemon.json.
Xem thêm:
- No_proxy là gì? Cách thiết lập bỏ qua proxy đúng cách
- Proxy Apache Airflow: 5 Bước Xây Data Pipeline Ổn Định
Kết luận
Proxy Docker vận hành ổn định khi anh em tách đúng daemon, build và runtime, đồng thời cấu hình NO_PROXY cho tài nguyên nội bộ. Hãy kiểm tra từng lớp và bảo vệ thông tin xác thực. Nếu cần kết nối ổn định, tham khảo Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam để chọn proxy cho Proxy Docker.