Så ställer du in en proxy i Docker (containrar, Compose och byggen)
Updated:
När du kör scrapers med flera containrar, automatiseringsprocesser eller DePIN-noder på en och samma värdserver gör miljövariablerna HTTP_PROXY och HTTPS_PROXY per container att varje tjänst kan ansluta utåt via en egen dedikerad statisk IPv4-adress från VinaProxy utan att värddatorns routingtabell ändras.
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP40 000 VND
- 5+ IP:er35 000 VND
- 10+ IP:er25 000 VND
- 20+ IP:er25 000 VND
- 50+ IP:er25 000 VND
- 100+ IP:er25 000 VND
- 200+ IP:er25 000 VND
- 500+ IP:er25 000 VND
- 1000+ IP:er22 000 VND
- 2000+ IP:er20 000 VND
- 1 IP40 000 VND
- 5+ IP:er35 000 VND
- 10+ IP:er25 000 VND
- 20+ IP:er25 000 VND
- 50+ IP:er25 000 VND
- 100+ IP:er25 000 VND
- 200+ IP:er25 000 VND
- 500+ IP:er25 000 VND
- 1000+ IP:er22 000 VND
- 2000+ IP:er20 000 VND
Förstå de 3 nivåerna för proxykonfiguration i Docker
Docker separerar trafiken för container-runtime, avbildsbyggen och daemon-hämtningar från register:
| Docker-nivå | Var det konfigureras | Vad som dirigeras |
|---|---|---|
| 1. Container-runtime | docker run -e HTTP_PROXY=... or Compose environment: | Trafik som genereras av appen inuti den specifika containern |
2. Avbildsbygge (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Pakethanterarens nedladdningar (apt, pip, npm) under bygget |
3. Docker-daemon (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | docker pull- och docker push-anrop till register |
Bästa praxis för Docker Compose och regler för NO_PROXY
- Ange variabler med både stora (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) och små bokstäver (http_proxy,https_proxy,no_proxy) så att alla Linux CLI-verktyg och körtidsmiljöer fångar upp dem - Ange alltid interna tjänstenamn i Docker Compose (t.ex.
NO_PROXY=localhost,127.0.0.1,redis,postgres) så att trafiken mellan containrarna stannar på det lokala bryggnätverket - Baka aldrig in proxylösenord i publika avbilder med
ENVi enDockerfile– skicka in dem vid körning via.envellerdocker-compose.yml
Steg för steg
- 1
Formatera din proxy som http://user:pass@ip:port
Konvertera raden
ip:port:user:passfrån VinaProxy med vår Proxy Format Converter. - 2
Lägg till miljövariabler i docker-compose.yml
Under tjänstens
environment:, definieraHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyochNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Starta eller återskapa containern
Kör
docker compose up -dför att tillämpa miljövariablerna. - 4
Verifiera utgående IP inifrån containern
Kör
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ipför att bekräfta att containern ansluter via din proxy-IP.
Vanliga frågor
Varför kan inte min container nå min Redis- eller Postgres-container efter att jag har angett HTTP_PROXY?
Utan NO_PROXY försöker din HTTP-klient nå interna tjänstenamn som redis eller db via den externa proxyn. Lägg till NO_PROXY=localhost,127.0.0.1,redis,db (och gemener no_proxy) för att kringgå proxyn för interna bryggvärdar.
Kan jag tilldela 20 olika proxys till 20 containrar på en och samma VPS?
Ja. Definiera varje containertjänst (eller skicka distinkta .env-variabler) med en egen http://user:pass@ip:port-sträng.
Varför ska man ange proxyvariabler med både stora och små bokstäver?
Vissa Linux-bibliotek (som libcurl) kontrollerar gemena http_proxy / https_proxy först, medan verktyg i Go och Node ofta kontrollerar versala HTTP_PROXY / HTTPS_PROXY.
Tilldela dedikerade statiska IP-adresser till varje Docker-container
Omedelbara obegränsade Dedicated IPv4- och Static ISP-proxyservrar i 7 länder.
Köp Docker-proxyservrar