Cum să configurezi un proxy în Docker (containere, Compose și build-uri)
Updated:
Când rulezi scraperi multi-container, procese worker de automatizare sau noduri DePIN pe un singur server gazdă, transmiterea variabilelor de mediu HTTP_PROXY și HTTPS_PROXY pentru fiecare container permite fiecărui serviciu să iasă printr-o adresă IPv4 statică dedicată proprie de la VinaProxy, fără a modifica tabela de rutare a mașinii gazdă.
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP40.000 VND
- 5+ IP-uri35.000 VND
- 10+ IP-uri25.000 VND
- 20+ IP-uri25.000 VND
- 50+ IP-uri25.000 VND
- 100+ IP-uri25.000 VND
- 200+ IP-uri25.000 VND
- 500+ IP-uri25.000 VND
- 1000+ IP-uri22.000 VND
- 2000+ IP-uri20.000 VND
- 1 IP40.000 VND
- 5+ IP-uri35.000 VND
- 10+ IP-uri25.000 VND
- 20+ IP-uri25.000 VND
- 50+ IP-uri25.000 VND
- 100+ IP-uri25.000 VND
- 200+ IP-uri25.000 VND
- 500+ IP-uri25.000 VND
- 1000+ IP-uri22.000 VND
- 2000+ IP-uri20.000 VND
Înțelegerea celor 3 domenii de configurare proxy în Docker
Docker separă traficul de runtime al containerelor, traficul de build al imaginilor și descărcările daemonului din registry:
| Domeniu Docker | Unde se configurează | Ce rutează |
|---|---|---|
| 1. Runtime container | docker run -e HTTP_PROXY=... sau în Compose la environment: | Traficul generat de aplicația din acel container specific |
2. Build imagine (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Descărcările managerelor de pachete (apt, pip, npm) în timpul procesului de build |
3. Daemonul Docker (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | Cererile docker pull și docker push către registry-uri |
Bune practici pentru Docker Compose și reguli NO_PROXY
- Setează atât variabilele cu majuscule (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY), cât și pe cele cu minuscule (http_proxy,https_proxy,no_proxy), astfel încât toate instrumentele CLI de Linux și mediile de execuție să le recunoască - Include întotdeauna numele serviciilor interne din Docker Compose (de ex.,
NO_PROXY=localhost,127.0.0.1,redis,postgres), astfel încât traficul dintre containere să rămână în rețeaua bridge locală - Nu include niciodată parolele proxy în imagini publice folosind
ENVîntr-unDockerfile—injectează-le la runtime prin.envsaudocker-compose.yml
Pas cu pas
- 1
Formatează proxy-ul ca http://user:pass@ip:port
Convertește linia VinaProxy
ip:port:user:passfolosind instrumentul nostru Proxy Format Converter. - 2
Adaugă variabilele de mediu în docker-compose.yml
În secțiunea
environment:a serviciului tău, defineșteHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyșiNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Pornește sau recreează containerul
Rulează
docker compose up -dpentru a aplica variabilele de mediu. - 4
Verifică adresa IP de ieșire din interiorul containerului
Execută
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ippentru a confirma că traficul de ieșire al containerului trece prin IP-ul proxy-ului tău.
Întrebări frecvente
De ce nu poate containerul meu să acceseze containerul Redis sau Postgres după setarea HTTP_PROXY?
Fără NO_PROXY, clientul tău HTTP încearcă să acceseze numele serviciilor interne precum redis sau db prin proxy-ul extern. Adaugă NO_PROXY=localhost,127.0.0.1,redis,db (și varianta cu minuscule no_proxy) pentru a ocoli proxy-ul în cazul gazdelor din rețeaua bridge internă.
Pot aloca 20 de proxy-uri diferite pentru 20 de containere pe un singur VPS?
Da. Definește fiecare serviciu de container (sau transmite variabile distincte prin .env) cu propriul șir http://user:pass@ip:port.
De ce trebuie setate variabilele proxy atât cu majuscule, cât și cu minuscule?
Unele biblioteci Linux (cum ar fi libcurl) verifică mai întâi variantele cu minuscule http_proxy / https_proxy, în timp ce instrumentele Go și Node verifică adesea variantele cu majuscule HTTP_PROXY / HTTPS_PROXY.
Alocă IP-uri statice dedicate fiecărui container Docker
Proxy-uri Dedicated IPv4 și Static ISP nelimitate, livrate instant, în 7 țări.
Cumpără proxy-uri Docker