Come configurare un proxy in Docker (container, Compose e build)
Aggiornato:
Quando si eseguono scraper multi-container, worker di automazione o nodi DePIN su un unico server host, passare le variabili di ambiente HTTP_PROXY e HTTPS_PROXY per ogni container consente a ciascun servizio di uscire tramite il proprio indirizzo IPv4 statico dedicato di VinaProxy senza modificare la tabella di routing dell'host.
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP40.000 VND
- 5+ IP35.000 VND
- 10+ IP25.000 VND
- 20+ IP25.000 VND
- 50+ IP25.000 VND
- 100+ IP25.000 VND
- 200+ IP25.000 VND
- 500+ IP25.000 VND
- 1000+ IP22.000 VND
- 2000+ IP20.000 VND
- 1 IP40.000 VND
- 5+ IP35.000 VND
- 10+ IP25.000 VND
- 20+ IP25.000 VND
- 50+ IP25.000 VND
- 100+ IP25.000 VND
- 200+ IP25.000 VND
- 500+ IP25.000 VND
- 1000+ IP22.000 VND
- 2000+ IP20.000 VND
Comprendere i 3 livelli di configurazione del proxy in Docker
Docker separa il traffico di runtime del container, il traffico di build dell'immagine e le richieste del demone ai registri:
| Ambito Docker | Dove configurarlo | Cosa instrada |
|---|---|---|
| 1. Runtime del container | docker run -e HTTP_PROXY=... o environment: in Compose | Traffico generato dall'applicazione all'interno di quello specifico container |
2. Build dell'immagine (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Download dei gestori di pacchetti (apt, pip, npm) durante la build |
3. Demone Docker (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | Richieste docker pull e docker push verso i registri |
Best practice di Docker Compose e regole NO_PROXY
- Imposta le variabili sia in maiuscolo (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) sia in minuscolo (http_proxy,https_proxy,no_proxy) in modo che tutti gli strumenti CLI e i runtime Linux le rilevino - Elenca sempre i nomi dei servizi interni di Docker Compose (es.:
NO_PROXY=localhost,127.0.0.1,redis,postgres) per fare in modo che il traffico tra container rimanga sulla rete bridge locale - Non inserire mai le password del proxy nelle immagini pubbliche con
ENVall'interno di unDockerfile: iniettale a runtime tramite.envodocker-compose.yml
Passo dopo passo
- 1
Formatta il tuo proxy come http://user:pass@ip:port
Converti la tua stringa VinaProxy
ip:port:user:passutilizzando il nostro Convertitore di formato proxy. - 2
Aggiungi le variabili di ambiente a docker-compose.yml
Sotto la voce
environment:del tuo servizio, definisciHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyeNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Avvia o ricrea il container
Esegui
docker compose up -dper applicare le variabili di ambiente. - 4
Verifica l'IP di uscita dall'interno del container
Esegui
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ipper confermare che il container esca tramite l'IP del tuo proxy.
Domande frequenti
Perché il mio container non riesce a raggiungere il container Redis o Postgres dopo aver impostato HTTP_PROXY?
Senza NO_PROXY, il tuo client HTTP tenta di raggiungere i nomi dei servizi interni come redis o db tramite il proxy esterno. Aggiungi NO_PROXY=localhost,127.0.0.1,redis,db (e in minuscolo no_proxy) per bypassare il proxy per gli host della rete bridge.
Posso assegnare 20 proxy diversi a 20 container su un singolo VPS?
Sì. Definisci ogni servizio container (o passa variabili .env distinte) con la propria stringa http://user:pass@ip:port.
Perché impostare le variabili proxy sia in maiuscolo che in minuscolo?
Alcune librerie Linux (come libcurl) verificano prima http_proxy / https_proxy in minuscolo, mentre gli strumenti in Go e Node spesso leggono HTTP_PROXY / HTTPS_PROXY in maiuscolo.
Assegna IP statici dedicati a ogni container Docker
Proxy IPv4 dedicati e ISP statici senza limiti di banda in 7 paesi.
Acquista proxy per Docker