როგორ გავმართოთ პროქსი Docker-ში (კონტეინერები, Compose და ბილდები)
Updated:
როდესაც ერთ ჰოსტ-სერვერზე მრავალკონტეინერიან სკრეიპერებს, ავტომატიზაციის ვორკერებს ან DePIN ნოდებს უშვებთ, თითოეულ კონტეინერზე HTTP_PROXY და HTTPS_PROXY გარემოს ცვლადების გადაცემა საშუალებას აძლევს თითოეულ სერვისს გავიდეს ქსელში VinaProxy-ის საკუთარი გამოყოფილი სტატიკური IPv4 მისამართით, ჰოსტ-მანქანის მარშრუტიზაციის ცხრილის შეცვლის გარეშე.
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
Docker პროქსის კონფიგურაციის 3 დონის გაგება
Docker ერთმანეთისგან ყოფს კონტეინერის runtime ტრაფიკს, image build ტრაფიკსა და daemon-ის რეესტრიდან pull-მოთხოვნებს:
| Docker-ის არეალი | სად კონფიგურირდება | რას ამისამართებს |
|---|---|---|
| 1. Container Runtime | docker run -e HTTP_PROXY=... or Compose environment: | ამ კონკრეტული კონტეინერის შიგნით აპლიკაციის მიერ გენერირებული ტრაფიკი |
2. Image Build (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | პაკეტების მენეჯერის ჩამოტვირთვები (apt, pip, npm) ბილდის დროს |
3. Docker Daemon (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | docker pull და docker push მოთხოვნები რეესტრებისკენ |
Docker Compose-ის საუკეთესო პრაქტიკა და NO_PROXY წესები
- განსაზღვრეთ როგორც დიდი (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY), ისე პატარა ასოებით ჩაწერილი (http_proxy,https_proxy,no_proxy) ცვლადები, რათა Linux-ის ყველა CLI ხელსაწყომ და პროგრამირების ენის გარემომ აღიქვას ისინი - ყოველთვის ჩამოთვალეთ Docker Compose-ის შიდა სერვისების სახელები (მაგ.,
NO_PROXY=localhost,127.0.0.1,redis,postgres), რათა კონტეინერებს შორის ტრაფიკი ლოკალურ bridge ქსელში დარჩეს - არასოდეს ჩააშენოთ პროქსის პაროლები საჯარო იმეიჯებში
Dockerfile-ისENVინსტრუქციით — მიაწოდეთ ისინი გაშვებისას runtime-ში.envანdocker-compose.ymlფაილის მეშვეობით
ნაბიჯ-ნაბიჯ
- 1
დააფორმატეთ თქვენი პროქსი როგორც http://user:pass@ip:port
გადააკონვერტირეთ თქვენი VinaProxy-ის
ip:port:user:passხაზი ჩვენი 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
გაუშვით ან თავიდან შექმენით კონტეინერი
გარემოს ცვლადების ასამოქმედებლად გაუშვით
docker compose up -d. - 4
შეამოწმეთ გამავალი IP კონტეინერის შიგნიდან
შეასრულეთ
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ip, რათა დარწმუნდეთ, რომ კონტეინერი ინტერნეტში თქვენი პროქსი IP-ით გადის.
ხშირად დასმული კითხვები
რატომ ვეღარ უკავშირდება ჩემი კონტეინერი Redis-ის ან Postgres-ის კონტეინერს HTTP_PROXY-ის დაყენების შემდეგ?
NO_PROXY-ის გარეშე თქვენი HTTP კლიენტი ცდილობს შიდა სერვისების სახელებს, როგორიცაა redis ან db, გარე პროქსის გავლით დაუკავშირდეს. დაამატეთ NO_PROXY=localhost,127.0.0.1,redis,db (და პატარა ასოებით no_proxy), რათა შიდა bridge ჰოსტებისთვის პროქსი გვერდის ავლით დარჩეს.
შემიძლია ერთ VPS-ზე 20 სხვადასხვა კონტეინერს 20 სხვადასხვა პროქსი მივაბა?
დიახ. განსაზღვრეთ თითოეული კონტეინერის სერვისი (ან გადაეცით ცალკეული .env ცვლადები) საკუთარი http://user:pass@ip:port სტრიქონით.
რატომ უნდა დავაყენოთ პროქსის ცვლადები როგორც დიდი, ისე პატარა ასოებით?
Linux-ის ზოგიერთი ბიბლიოთეკა (მაგალითად, libcurl) ჯერ პატარა ასოებით ჩაწერილ http_proxy / https_proxy-ს ამოწმებს, მაშინ როცა Go და Node ხელსაწყოები ხშირად დიდ HTTP_PROXY / HTTPS_PROXY-ს ითხოვენ.
მიანიჭეთ გამოყოფილი სტატიკური IP-ები თითოეულ Docker კონტეინერს
მყისიერი შეუზღუდავი Dedicated IPv4 და Static ISP პროქსები 7 ქვეყანაში.
შეიძინეთ Docker პროქსები