របៀបដំឡើង proxy ក្នុង Docker (Containers, Compose និង Builds)
Updated:
នៅពេលដំណើរការ scraper ច្រើន container, worker ស្វ័យប្រវត្តិកម្ម ឬ node DePIN លើម៉ាស៊ីនមេ host តែមួយ ការបញ្ជូនអថេរបរិស្ថាន HTTP_PROXY និង HTTPS_PROXY សម្រាប់ container នីមួយៗ អនុញ្ញាតឱ្យសេវាកម្មនីមួយៗចេញក្រៅតាមរយៈអាសយដ្ឋាន IPv4 ឋិតិវន្តផ្ទាល់ខ្លួនពី VinaProxy ដោយមិនចាំបាច់កែប្រែ routing table របស់ម៉ាស៊ីន host ឡើយ។
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₫
ស្វែងយល់អំពីវិសាលភាពកំណត់រចនាសម្ព័ន្ធ proxy ទាំង 3 របស់ Docker
Docker បែងចែកដាច់ដោយឡែករវាងចរាចរណ៍ runtime របស់ container, ចរាចរណ៍ build រូបភាព image, និងការទាញយកពី registry របស់ daemon៖
| វិសាលភាព 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 ទៅកាន់ registry |
ការអនុវត្តល្អបំផុតសម្រាប់ Docker Compose និងវិធាន NO_PROXY
- កំណត់ទាំងអថេរអក្សរធំ (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) និងអក្សរតូច (http_proxy,https_proxy,no_proxy) ដើម្បីឱ្យឧបករណ៍ Linux CLI និង runtime នៃភាសាទាំងអស់អាចចាប់យកពួកវាបាន - តែងតែរាយបញ្ជីឈ្មោះសេវាកម្ម Docker Compose ខាងក្នុង (ឧទាហរណ៍
NO_PROXY=localhost,127.0.0.1,redis,postgres) ដើម្បីឱ្យចរាចរណ៍រវាង container និង container ស្ថិតនៅលើបណ្តាញ bridge ក្នុងស្រុក - កុំបញ្ចូលពាក្យសម្ងាត់ proxy ទៅក្នុង image សាធារណៈជាមួយ
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 ចេញក្រៅតាមរយៈ proxy IP របស់អ្នក។
សំណួរដែលសួរញឹកញាប់
ហេតុអ្វីបានជា 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 សម្រាប់ host នៅលើ bridge ខាងក្នុង។
តើខ្ញុំអាចកំណត់ proxy 20 ផ្សេងគ្នាទៅឱ្យ 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
Proxy Dedicated IPv4 និង Static ISP មិនកំណត់ទិន្នន័យ ទទួលបានភ្លាមៗនៅទូទាំង 7 ប្រទេស។
ទិញ Docker Proxy