Πώς να ρυθμίσετε proxy στο Docker (Containers, Compose & Builds)
Updated:
Όταν εκτελείτε scrapers πολλαπλών containers, automation workers ή κόμβους DePIN σε έναν ενιαίο host server, ο ορισμός των μεταβλητών περιβάλλοντος HTTP_PROXY και HTTPS_PROXY ανά container επιτρέπει σε κάθε υπηρεσία να δρομολογεί την έξοδό της μέσω της δικής της αποκλειστικής στατικής διεύθυνσης IPv4 από την VinaProxy, χωρίς να τροποποιείται ο πίνακας δρομολόγησης του κεντρικού μηχανήματος.
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP40.000 ₫
- 5+ IP35.000 ₫
- 10+ IP25.000 ₫
- 20+ IP25.000 ₫
- 50+ IP25.000 ₫
- 100+ IP25.000 ₫
- 200+ IP25.000 ₫
- 500+ IP25.000 ₫
- 1000+ IP22.000 ₫
- 2000+ IP20.000 ₫
- 1 IP40.000 ₫
- 5+ IP35.000 ₫
- 10+ IP25.000 ₫
- 20+ IP25.000 ₫
- 50+ IP25.000 ₫
- 100+ IP25.000 ₫
- 200+ IP25.000 ₫
- 500+ IP25.000 ₫
- 1000+ IP22.000 ₫
- 2000+ IP20.000 ₫
Κατανόηση των 3 επιπέδων ρύθμισης proxy στο Docker
Το Docker διαχωρίζει την κίνηση κατά την εκτέλεση των containers, τη λήψη δεδομένων κατά το build των images και τα pulls του daemon από τα registries:
| Επίπεδο Docker | Πού ρυθμίζεται | Τι δρομολογεί |
|---|---|---|
| 1. Container Runtime | docker run -e HTTP_PROXY=... ή Compose environment: | Κίνηση που παράγεται από την εφαρμογή μέσα στο συγκεκριμένο container |
2. Image Build (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Λήψεις διαχειριστών πακέτων (apt, pip, npm) κατά το build |
3. Docker Daemon (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | Αιτήματα docker pull και docker push προς registries |
Βέλτιστες πρακτικές για το Docker Compose & κανόνες NO_PROXY
- Ορίστε τόσο κεφαλαίες (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) όσο και πεζές (http_proxy,https_proxy,no_proxy) μεταβλητές, ώστε να αναγνωρίζονται από όλα τα εργαλεία CLI του Linux και τα runtimes γλωσσών - Καταχωρίζετε πάντα τα εσωτερικά ονόματα υπηρεσιών του Docker Compose (π.χ.
NO_PROXY=localhost,127.0.0.1,redis,postgres), ώστε η επικοινωνία μεταξύ των containers να παραμένει στο τοπικό bridge network - Μην ενσωματώνετε ποτέ κωδικούς πρόσβασης proxy σε δημόσια images με
ENVμέσα σεDockerfile—εισαγάγετέ τους κατά το runtime μέσω.envήdocker-compose.yml
Βήμα προς βήμα
- 1
Διαμορφώστε το proxy σας ως http://user:pass@ip:port
Μετατρέψτε τη γραμμή
ip:port:user:passτης VinaProxy χρησιμοποιώντας το Proxy Format Converter μας. - 2
Προσθέστε μεταβλητές περιβάλλοντος στο docker-compose.yml
Κάτω από το
environment:της υπηρεσίας σας, ορίστε ταHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyκαιNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Εκκινήστε ή αναδημιουργήστε το container
Εκτελέστε
docker compose up -dγια να εφαρμόσετε τις μεταβλητές περιβάλλοντος. - 4
Επαληθεύστε την IP εξόδου μέσα από το container
Εκτελέστε
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ipγια να επιβεβαιώσετε ότι το container εξέρχεται μέσω της IP του proxy σας.
Συχνές ερωτήσεις
Γιατί το container μου δεν μπορεί να συνδεθεί με το container του Redis ή της Postgres μετά τον ορισμό του HTTP_PROXY;
Χωρίς το NO_PROXY, ο HTTP client προσπαθεί να επικοινωνήσει με εσωτερικά ονόματα υπηρεσιών όπως redis ή db μέσω του εξωτερικού proxy. Προσθέστε NO_PROXY=localhost,127.0.0.1,redis,db (και πεζό no_proxy) για να παρακάμψετε το proxy για εσωτερικούς bridge hosts.
Μπορώ να αντιστοιχίσω 20 διαφορετικά proxies σε 20 containers σε ένα VPS;
Ναι. Ορίστε κάθε υπηρεσία container (ή περάστε διακριτές μεταβλητές .env) με το δικό της αλφαριθμητικό http://user:pass@ip:port.
Γιατί να ορίσω μεταβλητές proxy τόσο με κεφαλαία όσο και με πεζά γράμματα;
Ορισμένες βιβλιοθήκες του Linux (όπως η libcurl) ελέγχουν πρώτα τα πεζά http_proxy / https_proxy, ενώ τα εργαλεία Go και Node ελέγχουν συχνά τα κεφαλαία HTTP_PROXY / HTTPS_PROXY.
Αντιστοιχίστε αποκλειστικές στατικές IP σε κάθε Docker container
Άμεσα unmetered Dedicated IPv4 και Static ISP proxies σε 7 χώρες.
Αγοράστε Docker Proxies