Jak skonfigurować proxy w Dockerze (kontenery, Compose i kompilacja)
Updated:
Podczas uruchamiania wielokontenerowych scraperów, workerów automatyzacji czy węzłów DePIN na jednym serwerze, przekazanie zmiennych środowiskowych HTTP_PROXY i HTTPS_PROXY do poszczególnych kontenerów pozwala każdej usłudze łączyć się przez własny dedykowany statyczny adres IPv4 od VinaProxy bez modyfikacji tablicy routingu hosta.
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
3 zakresy konfiguracji proxy w Dockerze
Docker rozdziela ruch środowiska uruchomieniowego kontenerów, kompilacji obrazów oraz pobierania z rejestru przez demona:
| Zakres Dockera | Gdzie skonfigurować | Co przekierowuje |
|---|---|---|
| 1. Środowisko uruchomieniowe kontenera | docker run -e HTTP_PROXY=... lub sekcja environment: w Compose | Ruch generowany przez aplikację wewnątrz danego kontenera |
2. Budowanie obrazu (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Pobieranie pakietów przez menedżery (apt, pip, npm) podczas budowy |
3. Demon Dockera (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | Operacje docker pull i docker push wysyłane do rejestrów |
Dobre praktyki Docker Compose i reguły NO_PROXY
- Ustawiaj zmienne pisane zarówno wielkimi (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY), jak i małymi literami (http_proxy,https_proxy,no_proxy), aby wszystkie narzędzia CLI i środowiska uruchomieniowe Linuksa mogły je odczytać - Zawsze podawaj wewnętrzne nazwy usług Docker Compose (np.
NO_PROXY=localhost,127.0.0.1,redis,postgres), aby komunikacja między kontenerami pozostała w lokalnej sieci bridge - Nigdy nie zapisuj haseł do proxy w publicznych obrazach za pomocą
ENVwDockerfile— przekazuj je w czasie uruchamiania przez.envlubdocker-compose.yml
Krok po kroku
- 1
Sformatuj proxy jako http://user:pass@ip:port
Przekonwertuj ciąg
ip:port:user:passz VinaProxy za pomocą naszego narzędzia Proxy Format Converter. - 2
Dodaj zmienne środowiskowe do docker-compose.yml
W sekcji
environment:swojej usługi zdefiniujHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyorazNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Uruchom lub utwórz kontener ponownie
Uruchom
docker compose up -d, aby zastosować zmienne środowiskowe. - 4
Sprawdź wychodzący adres IP z wnętrza kontenera
Wykonaj
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ip, aby potwierdzić, że kontener łączy się przez adres IP Twojego proxy.
Często zadawane pytania
Dlaczego po ustawieniu HTTP_PROXY mój kontener nie może połączyć się z kontenerem Redis lub Postgres?
Bez NO_PROXY Twój klient HTTP próbuje łączyć się z wewnętrznymi nazwami usług (takimi jak redis lub db) przez zewnętrzne proxy. Dodaj NO_PROXY=localhost,127.0.0.1,redis,db (oraz małe litery no_proxy), aby pominąć proxy dla hostów w wewnętrznej sieci bridge.
Czy mogę przypisać 20 różnych proxy do 20 kontenerów na jednym serwerze VPS?
Tak. Zdefiniuj każdą usługę kontenera (lub przekaż osobne zmienne w .env) z jej własnym ciągiem http://user:pass@ip:port.
Dlaczego warto ustawiać zmienne proxy pisane wielkimi i małymi literami?
Niektóre biblioteki Linuksa (np. libcurl) sprawdzają najpierw małe litery http_proxy / https_proxy, natomiast narzędzia w Go i Node często sprawdzają wielkie litery HTTP_PROXY / HTTPS_PROXY.
Przypisz dedykowane statyczne IP do każdego kontenera Docker
Błyskawicznie aktywowane, nielimitowane proxy Dedicated IPv4 i Static ISP w 7 krajach.
Kup proxy dla Dockera