Quay lại blog

Cài đặt proxy trong các container Docker: hướng dẫn đầy đủ với ví dụ mã

Tìm hiểu cách cấu hình proxy đúng cách trong các container Docker: từ các biến môi trường đơn giản đến các kịch bản nâng cao với docker-compose và mạng tùy chỉnh.

📅17 tháng 2, 2026
```html

Các container Docker thường yêu cầu truy cập vào các tài nguyên bên ngoài thông qua proxy — để phân tích, kiểm tra từ các khu vực khác nhau hoặc vượt qua các hạn chế. Cấu hình proxy không chính xác dẫn đến lỗi kết nối, rò rỉ IP thực và sự cố trong hoạt động của ứng dụng. Trong bài viết này, chúng ta sẽ xem xét tất cả các cách cấu hình proxy trong Docker: từ các biến môi trường đơn giản đến các kịch bản nâng cao với docker-compose và mạng tùy chỉnh.

Tại sao cần proxy trong các container Docker

Các container Docker được sử dụng trong nhiều kịch bản, nơi mà proxy trở thành một nhu cầu thiết yếu. Hãy xem xét các nhiệm vụ chính mà proxy giải quyết trong các ứng dụng được container hóa.

Phân tích và thu thập dữ liệu: Nếu bạn chạy các trình phân tích trong các container Docker để thu thập dữ liệu từ các thị trường (Wildberries, Ozon), mạng xã hội hoặc các công cụ tìm kiếm, proxy bảo vệ khỏi việc bị chặn theo IP. Các container cho phép mở rộng phân tích — khởi động 10-50 phiên bản cùng một lúc, mỗi phiên bản với proxy riêng của nó.

Kiểm tra từ các khu vực khác nhau: Khi phát triển các ứng dụng web hoặc API di động, thường cần kiểm tra cách dịch vụ hoạt động từ các quốc gia khác nhau. Các container Docker với proxy từ các vị trí địa lý khác nhau cho phép tự động hóa việc kiểm tra này trong quy trình CI/CD.

Tự động hóa và bot: Các container với Selenium, Puppeteer hoặc Playwright để tự động hóa trình duyệt yêu cầu proxy để làm việc với nhiều tài khoản. Mỗi container nhận proxy và môi trường cách ly riêng.

Vượt qua các hạn chế doanh nghiệp: Trong một số hạ tầng, các container Docker phải đi qua proxy doanh nghiệp để truy cập Internet. Nếu không cấu hình đúng, các container sẽ không thể tải xuống các gói hoặc truy cập các API bên ngoài.

Quan trọng: Các container Docker kế thừa các cài đặt mạng của hệ thống host, nhưng proxy cần được cấu hình rõ ràng. Việc chỉ có proxy trên host không có nghĩa là các container sẽ tự động sử dụng nó.

Cấu hình cơ bản thông qua các biến môi trường

Cách đơn giản nhất để cấu hình proxy trong container Docker là truyền các biến môi trường khi khởi động. Phương pháp này hoạt động cho hầu hết các ứng dụng tôn trọng các biến tiêu chuẩn HTTP_PROXY, HTTPS_PROXY và NO_PROXY.

Khởi động container với proxy thông qua docker run:

docker run -d \
  -e HTTP_PROXY="http://username:password@proxy.example.com:8080" \
  -e HTTPS_PROXY="http://username:password@proxy.example.com:8080" \
  -e NO_PROXY="localhost,127.0.0.1,.local" \
  your-image:latest

Giải thích các tham số:

  • HTTP_PROXY — proxy cho các yêu cầu HTTP
  • HTTPS_PROXY — proxy cho các yêu cầu HTTPS (sử dụng http://, không phải https://)
  • NO_PROXY — danh sách các địa chỉ không nên đi qua proxy

Ví dụ với proxy SOCKS5:

docker run -d \
  -e HTTP_PROXY="socks5://username:password@proxy.example.com:1080" \
  -e HTTPS_PROXY="socks5://username:password@proxy.example.com:1080" \
  your-image:latest

Lỗi thường gặp: Sử dụng https:// trong URL proxy cho HTTPS_PROXY. Đúng là chỉ định http:// hoặc socks5://, ngay cả cho lưu lượng HTTPS. Giao thức trong URL chỉ ra loại máy chủ proxy, không phải loại lưu lượng.

Cấu hình proxy cho Docker daemon (ảnh hưởng đến tất cả các container):

Nếu bạn cần tất cả các container mặc định sử dụng proxy, hãy cấu hình Docker daemon. Tạo tệp /etc/systemd/system/docker.service.d/http-proxy.conf:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=http://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.local"

Sau khi thay đổi, hãy khởi động lại Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

Cấu hình proxy trong Dockerfile

Khi bạn xây dựng một hình ảnh Docker cần tải xuống các gói thông qua proxy (ví dụ: apt-get, pip, npm), bạn cần cấu hình proxy trong giai đoạn xây dựng. Docker hỗ trợ các tham số build-time cho điều này.

Ví dụ Dockerfile hỗ trợ proxy:

FROM python:3.11-slim

# Tham số cho proxy (được truyền khi xây dựng)
ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY

# Thiết lập các biến môi trường cho quá trình xây dựng
ENV HTTP_PROXY=${HTTP_PROXY}
ENV HTTPS_PROXY=${HTTPS_PROXY}
ENV NO_PROXY=${NO_PROXY}

# Cài đặt các phụ thuộc thông qua proxy
RUN apt-get update && apt-get install -y curl

# Cài đặt các gói Python
COPY requirements.txt .
RUN pip install --proxy ${HTTP_PROXY} -r requirements.txt

# Sao chép ứng dụng
COPY . /app
WORKDIR /app

# Xóa các biến proxy cho runtime (tùy chọn)
ENV HTTP_PROXY=
ENV HTTPS_PROXY=

CMD ["python", "app.py"]

Xây dựng hình ảnh với việc truyền proxy:

docker build \
  --build-arg HTTP_PROXY=http://proxy.example.com:8080 \
  --build-arg HTTPS_PROXY=http://proxy.example.com:8080 \
  --build-arg NO_PROXY=localhost,127.0.0.1 \
  -t my-app:latest .

Đối với các ứng dụng Node.js (npm qua proxy):

FROM node:18-alpine

ARG HTTP_PROXY
ARG HTTPS_PROXY

# Cấu hình npm để làm việc qua proxy
RUN npm config set proxy ${HTTP_PROXY}
RUN npm config set https-proxy ${HTTPS_PROXY}

COPY package*.json ./
RUN npm install

# Xóa cấu hình proxy cho npm
RUN npm config delete proxy
RUN npm config delete https-proxy

COPY . .
CMD ["node", "server.js"]

Mẹo: Nếu proxy chỉ cần cho quá trình xây dựng, không phải cho hoạt động của ứng dụng, hãy xóa các biến môi trường ở cuối Dockerfile. Điều này sẽ ngăn chặn việc rò rỉ thông tin xác thực vào nhật ký của container.

Cấu hình proxy trong docker-compose.yml

Docker Compose đơn giản hóa việc quản lý proxy cho các ứng dụng đa container. Bạn có thể cấu hình proxy toàn cục hoặc cho từng dịch vụ riêng lẻ.

Cấu hình cơ bản với proxy cho một dịch vụ:

version: '3.8'

services:
  parser:
    image: python:3.11-slim
    environment:
      - HTTP_PROXY=http://username:password@proxy.example.com:8080
      - HTTPS_PROXY=http://username:password@proxy.example.com:8080
      - NO_PROXY=localhost,127.0.0.1,db
    volumes:
      - ./app:/app
    working_dir: /app
    command: python parser.py
    
  db:
    image: postgres:15
    # Cơ sở dữ liệu không sử dụng proxy
    environment:
      - POSTGRES_PASSWORD=secret

Sử dụng tệp .env để lưu trữ thông tin xác thực một cách an toàn:

Tạo một tệp .env trong thư mục chứa docker-compose.yml:

PROXY_URL=http://username:password@proxy.example.com:8080
NO_PROXY=localhost,127.0.0.1

Tham chiếu các biến trong docker-compose.yml:

version: '3.8'

services:
  parser:
    image: python:3.11-slim
    environment:
      - HTTP_PROXY=${PROXY_URL}
      - HTTPS_PROXY=${PROXY_URL}
      - NO_PROXY=${NO_PROXY}
    volumes:
      - ./app:/app
    working_dir: /app
    command: python parser.py

Cấu hình proxy cho việc xây dựng hình ảnh trong docker-compose:

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        - HTTP_PROXY=${PROXY_URL}
        - HTTPS_PROXY=${PROXY_URL}
        - NO_PROXY=${NO_PROXY}
    environment:
      - HTTP_PROXY=${PROXY_URL}
      - HTTPS_PROXY=${PROXY_URL}
    ports:
      - "3000:3000"

Mở rộng với các proxy khác nhau cho mỗi phiên bản:

Nếu bạn cần khởi động nhiều trình phân tích, mỗi trình phân tích với proxy riêng, hãy sử dụng các dịch vụ riêng lẻ:

version: '3.8'

services:
  parser-1:
    image: my-parser:latest
    environment:
      - PROXY_URL=http://user:pass@proxy1.example.com:8080
    volumes:
      - ./data:/data
    
  parser-2:
    image: my-parser:latest
    environment:
      - PROXY_URL=http://user:pass@proxy2.example.com:8080
    volumes:
      - ./data:/data
    
  parser-3:
    image: my-parser:latest
    environment:
      - PROXY_URL=http://user:pass@proxy3.example.com:8080
    volumes:
      - ./data:/data

Cấu hình proxy ở cấp độ ứng dụng

Một số ứng dụng không hỗ trợ các biến môi trường tiêu chuẩn HTTP_PROXY. Trong những trường hợp này, bạn cần cấu hình proxy trong mã ứng dụng hoặc các tệp cấu hình.

Python (thư viện requests):

import os
import requests

# Lấy proxy từ biến môi trường
proxy_url = os.getenv('PROXY_URL', 'http://proxy.example.com:8080')

proxies = {
    'http': proxy_url,
    'https': proxy_url
}

# Sử dụng proxy trong các yêu cầu
response = requests.get('https://api.example.com/data', proxies=proxies)
print(response.json())

# Đối với proxy SOCKS5, cài đặt pip install requests[socks]
# proxies = {
#     'http': 'socks5://user:pass@proxy.example.com:1080',
#     'https': 'socks5://user:pass@proxy.example.com:1080'
# }

Python (aiohttp cho các yêu cầu bất đồng bộ):

import os
import aiohttp
import asyncio

async def fetch_with_proxy():
    proxy_url = os.getenv('PROXY_URL')
    
    async with aiohttp.ClientSession() as session:
        async with session.get(
            'https://api.example.com/data',
            proxy=proxy_url
        ) as response:
            data = await response.json()
            print(data)

asyncio.run(fetch_with_proxy())

Node.js (thư viện axios):

const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const proxyUrl = process.env.PROXY_URL || 'http://proxy.example.com:8080';
const agent = new HttpsProxyAgent(proxyUrl);

axios.get('https://api.example.com/data', {
  httpsAgent: agent
})
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error('Lỗi:', error.message);
});

Node.js (mô-đun https tích hợp):

const https = require('https');
const { HttpsProxyAgent } = require('https-proxy-agent');

const proxyUrl = process.env.PROXY_URL;
const agent = new HttpsProxyAgent(proxyUrl);

const options = {
  hostname: 'api.example.com',
  port: 443,
  path: '/data',
  method: 'GET',
  agent: agent
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => console.log(JSON.parse(data)));
});

req.on('error', (error) => console.error(error));
req.end();

Selenium với proxy trong container Docker:

from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
import os

proxy_url = os.getenv('PROXY_URL', 'proxy.example.com:8080')

# Cấu hình proxy cho Chrome
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy_url}')

# Để xác thực, hãy sử dụng tiện ích mở rộng hoặc SSH tunnel
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://example.com')
print(driver.title)
driver.quit()

Puppeteer với proxy:

const puppeteer = require('puppeteer');

(async () => {
  const proxyUrl = process.env.PROXY_URL || 'proxy.example.com:8080';
  
  const browser = await puppeteer.launch({
    args: [`--proxy-server=${proxyUrl}`],
    headless: true
  });
  
  const page = await browser.newPage();
  
  // Xác thực cho proxy
  await page.authenticate({
    username: 'your-username',
    password: 'your-password'
  });
  
  await page.goto('https://example.com');
  console.log(await page.title());
  
  await browser.close();
})();

Loại proxy nào nên chọn cho Docker

Việc lựa chọn loại proxy phụ thuộc vào nhiệm vụ mà ứng dụng của bạn giải quyết trong container Docker. Hãy xem xét các kịch bản chính và khuyến nghị.

Loại proxy Khi nào sử dụng Ưu điểm Nhược điểm
Datacenter Phân tích, yêu cầu API, kiểm tra Tốc độ cao, giá thấp, ổn định Dễ bị phát hiện, bị chặn trên các trang web bảo mật
Rresident Làm việc với mạng xã hội, thị trường, các trang web phức tạp IP thực, rủi ro bị chặn thấp, địa lý rộng Đắt hơn, chậm hơn datacenter, lưu lượng hạn chế
Di động Kiểm tra API di động, vượt qua các chặn nghiêm ngặt Tính ẩn danh tối đa, IP của các nhà mạng Giá cao, địa lý hạn chế

Khuyến nghị về lựa chọn cho các nhiệm vụ cụ thể:

Phân tích các thị trường và danh mục sản phẩm: Nếu bạn phân tích Wildberries, Ozon hoặc các thị trường khác thông qua các container Docker, hãy sử dụng proxy resident. Các nền tảng này thường xuyên chặn IP của datacenter. Hãy thiết lập quay vòng proxy mỗi 5-10 phút để giả lập nhiều người dùng khác nhau.

Kiểm tra và phát triển API: Để kiểm tra các API riêng hoặc tích hợp với các dịch vụ bên ngoài, hãy sử dụng proxy datacenter. Chúng cung cấp tốc độ cao và độ ổn định kết nối, điều này rất quan trọng cho các bài kiểm tra tự động trong CI/CD.

Tự động hóa Selenium/Puppeteer: Khi chạy tự động hóa trình duyệt trong các container để làm việc với các trang web bảo mật (mạng xã hội, ngân hàng, ứng dụng web phức tạp), hãy chọn proxy resident. Chúng làm giảm khả năng gặp captcha và bị chặn.

Kiểm tra phân tán địa lý: Nếu cần kiểm tra khả năng truy cập dịch vụ từ các quốc gia khác nhau, hãy sử dụng proxy resident với lựa chọn vị trí địa lý cụ thể. Khởi động nhiều container Docker, mỗi container với proxy của quốc gia riêng.

Mẹo về mở rộng: Khi khởi động 10+ container với proxy, hãy sử dụng một nhóm proxy với quay vòng tự động. Điều này đơn giản hóa việc quản lý và ngăn chặn việc sử dụng lại một IP bởi nhiều container.

Giải quyết các vấn đề thường gặp

Khi làm việc với proxy trong các container Docker, có những vấn đề điển hình xảy ra. Hãy xem xét những vấn đề thường gặp nhất và cách giải quyết chúng.

Vấn đề 1: Container không thể kết nối với proxy

Triệu chứng: Lỗi "Connection refused", "Proxy connection failed", thời gian chờ khi khởi động container.

Giải pháp:

  • Kiểm tra khả năng truy cập proxy từ host: curl -x http://proxy:port https://example.com
  • Đảm bảo rằng máy chủ proxy có thể truy cập từ mạng Docker. Nếu proxy trên localhost của host, hãy sử dụng host.docker.internal (Mac/Windows) hoặc IP của host trong mạng bridge
  • Kiểm tra các quy tắc tường lửa — các container Docker có thể bị chặn cho các kết nối xuất phát
  • Đối với proxy có xác thực, hãy kiểm tra tính chính xác của tên người dùng và mật khẩu, mã hóa các ký tự đặc biệt trong URL

Ví dụ về truy cập proxy trên host:

# Mac/Windows
docker run -e HTTP_PROXY=http://host.docker.internal:8080 my-image

# Linux (tìm IP của host trong mạng bridge)
ip addr show docker0  # Thường là 172.17.0.1
docker run -e HTTP_PROXY=http://172.17.0.1:8080 my-image

Vấn đề 2: DNS không được giải quyết qua proxy

Triệu chứng: Lỗi "Could not resolve host", các yêu cầu DNS không đi qua proxy.

Giải pháp:

  • Sử dụng proxy SOCKS5 thay vì HTTP — SOCKS5 sẽ proxy các yêu cầu DNS
  • Cấu hình DNS trong Docker: thêm --dns 8.8.8.8 khi khởi động container
  • Đối với các ứng dụng không hỗ trợ DNS qua proxy, hãy sử dụng proxychains bên trong container
# Dockerfile với proxychains
FROM python:3.11-slim

RUN apt-get update && apt-get install -y proxychains4

# Cấu hình proxychains
RUN echo "strict_chain\nproxy_dns\n[ProxyList]\nsocks5 proxy.example.com 1080" > /etc/proxychains4.conf

# Khởi động ứng dụng thông qua proxychains
CMD ["proxychains4", "python", "app.py"]

Vấn đề 3: Rò rỉ IP thực của container

Triệu chứng: Dịch vụ mục tiêu thấy IP của host hoặc container thay vì IP của proxy.

Giải pháp:

  • Kiểm tra xem ứng dụng có thực sự sử dụng proxy hay không — thực hiện yêu cầu đến https://api.ipify.org
  • Đảm bảo rằng tất cả các HTTP-client trong mã được cấu hình để sử dụng proxy
  • Đối với các kết nối WebRTC và WebSocket, proxy có thể không hoạt động — tắt WebRTC trong các trình duyệt
  • Kiểm tra các tiêu đề yêu cầu — một số thư viện thêm X-Forwarded-For với IP thực

Bài kiểm tra rò rỉ IP trong container:

# Không có proxy
docker run --rm curlimages/curl:latest curl https://api.ipify.org

# Có proxy
docker run --rm \
  -e HTTPS_PROXY=http://proxy.example.com:8080 \
  curlimages/curl:latest curl https://api.ipify.org

Vấn đề 4: Hoạt động chậm qua proxy

Triệu chứng: Độ trễ cao, thời gian chờ, tải dữ liệu chậm.

Giải pháp:

  • Kiểm tra tốc độ proxy trực tiếp từ host — có thể vấn đề nằm ở chính proxy
  • Tăng thời gian chờ trong ứng dụng để làm việc với các proxy chậm
  • Sử dụng kết nối keep-alive để tái sử dụng các kết nối TCP
  • Đối với các proxy resident, tốc độ chậm là điều bình thường, hãy tối ưu hóa số lượng yêu cầu
  • Cấu hình nhóm kết nối trong các HTTP-client cho các yêu cầu song song

Vấn đề 5: Proxy hoạt động cho HTTP, nhưng không cho HTTPS

Triệu chứng: Các yêu cầu HTTP đi qua, HTTPS trả về lỗi SSL/TLS.

Giải pháp:

  • Đảm bảo rằng biến HTTPS_PROXY đã được thiết lập (không chỉ HTTP_PROXY)
  • Sử dụng http:// trong URL proxy cho HTTPS_PROXY, không phải https://
  • Kiểm tra xem proxy có hỗ trợ phương thức CONNECT cho tunneling HTTPS không
  • Đối với proxy có chứng chỉ tự ký, tắt kiểm tra SSL (chỉ cho các bài kiểm tra!)

Bảo mật và quản lý thông tin xác thực

Việc lưu trữ thông tin xác thực proxy trong các container Docker yêu cầu sự chú ý đặc biệt đến bảo mật. Quản lý mật khẩu không đúng cách có thể dẫn đến việc rò rỉ chúng trong các nhật ký, hình ảnh hoặc kho lưu trữ.

Sử dụng Docker Secrets cho môi trường sản xuất:

Docker Swarm hỗ trợ cơ chế secrets để lưu trữ mật khẩu một cách an toàn. Tạo một secret:

echo "http://username:password@proxy.example.com:8080" | docker secret create proxy_url -

Sử dụng trong docker-compose cho Swarm:

version: '3.8'

services:
  app:
    image: my-app:latest
    secrets:
      - proxy_url
    environment:
      - PROXY_URL_FILE=/run/secrets/proxy_url
    command: sh -c 'export HTTP_PROXY=$(cat $$PROXY_URL_FILE) && python app.py'

secrets:
  proxy_url:
    external: true

Các biến môi trường thông qua các tệp (.env):

Đối với phát triển, hãy sử dụng các tệp .env, nhưng KHÔNG BAO GIỜ cam kết chúng vào Git. Thêm vào .gitignore:

# .gitignore
.env
.env.local
*.env

Tạo .env.example mà không có thông tin xác thực thực tế:

# .env.example
PROXY_URL=http://username:password@proxy.example.com:8080
NO_PROXY=localhost,127.0.0.1

Tránh việc mã hóa thông tin xác thực trong các hình ảnh:

Nguy hiểm: Không bao giờ ghi trực tiếp mật khẩu vào Dockerfile bằng cách sử dụng ENV. Những giá trị này được lưu trữ trong các lớp của hình ảnh và có thể truy cập ngay cả sau khi xóa.

# ❌ XẤU - mật khẩu sẽ còn lại trong hình ảnh
FROM python:3.11
ENV HTTP_PROXY=http://user:secretpass@proxy.com:8080
COPY . /app

# ✅ TỐT - truyền qua các tham số xây dựng hoặc biến runtime
FROM python:3.11
ARG HTTP_PROXY
# Chỉ được sử dụng trong quá trình xây dựng, không được lưu trong hình ảnh cuối cùng

Sử dụng các giai đoạn xây dựng nhiều để xóa thông tin xác thực:

# Giai đoạn xây dựng với proxy
FROM python:3.11 AS builder
ARG HTTP_PROXY
ENV HTTP_PROXY=${HTTP_PROXY}
COPY requirements.txt .
RUN pip install -r requirements.txt

# Giai đoạn cuối không có các biến proxy
FROM python:3.11-slim
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY . /app
WORKDIR /app
CMD ["python", "app.py"]

Quay vòng thông tin xác thực proxy:

Nếu nhà cung cấp proxy của bạn hỗ trợ API để tạo thông tin xác thực tạm thời, hãy sử dụng chúng thay vì mật khẩu tĩnh. Tạo một script khởi tạo trong container:

#!/bin/bash
# entrypoint.sh

# Lấy thông tin xác thực tạm thời từ API
PROXY_CREDS=$(curl -s https://api.proxyservice.com/generate-temp-auth)
export HTTP_PROXY="http://${PROXY_CREDS}@proxy.example.com:8080"

# Khởi động ứng dụng
exec python app.py

Ghi nhật ký mà không rò rỉ mật khẩu:

Cấu hình ghi nhật ký sao cho các biến với proxy không xuất hiện trong đầu ra:

import os
import re

def safe_log_env():
    """Ghi nhật ký các biến môi trường mà không có mật khẩu"""
    for key, value in os.environ.items():
        if 'PROXY' in key:
            # Che giấu mật khẩu trong URL
            safe_value = re.sub(r'://([^:]+):([^@]+)@', r'://\1:****@', value)
            print(f"{key}={safe_value}")
        else:
            print(f"{key}={value}")

safe_log_env()

Kết luận

Cấu hình proxy trong các container Docker là một kỹ năng quan trọng cho các nhà phát triển làm việc với phân tích, tự động hóa và các hệ thống phân tán. Bạn đã tìm hiểu cách cấu hình proxy thông qua các biến môi trường, Dockerfile và docker-compose, cách tích hợp proxy vào mã ứng dụng trên Python và Node.js, và cách giải quyết các vấn đề điển hình với kết nối và bảo mật.

Những điểm chính để làm việc thành công với proxy trong Docker: sử dụng các biến môi trường để linh hoạt, lưu trữ thông tin xác thực một cách an toàn thông qua secrets hoặc tệp .env, lựa chọn loại proxy tùy thuộc vào nhiệm vụ, và luôn kiểm tra sự không rò rỉ IP thực trước khi triển khai vào sản xuất.

Đối với hầu hết các nhiệm vụ phân tích và tự động hóa trong các container Docker, chúng tôi khuyên bạn nên sử dụng proxy resident — chúng cung cấp tính ẩn danh cao và rủi ro bị chặn tối thiểu khi làm việc với các trang web và API bảo mật. Nếu bạn cần tốc độ tối đa cho việc kiểm tra API hoặc các nhiệm vụ nội bộ, hãy xem xét proxy datacenter.

```