StableProxy
© StableProxy – 2021 - 2026 – Ukraine

StableProxy
© StableProxy – 2021 - 2026 – Ukraine

Покрокове керівництво з налаштування проксі-сервера в Docker через командний рядок (CLI) та файл конфігурації config.json. Навіщо потрібен Docker проксі.
Олександр Л.
Налаштування проксі-сервера може знадобитися на платформі Docker у ряді випадків. Найпоширенішими є обхід лімітів веб-провайдера та проведення тестів розробленого вами ПЗ у багатьох геолокаціях. Почнемо з розгляду поняття Докера.
Докером називається набір продуктів, реалізованих за принципом «платформа як услуга» (PaaS), які використовують віртуалізацію на рівні ОС, щоб доставляти програмне забезпечення в пакетах, званих контейнерами, тобто, здійснювати контейнеризацію пакетів. У сервісу передбачені різні за оплатою рівні: безкоштовний і преміум з розширеними функціями. Дане програмне забезпечення було випущено у 2013 році. Інакше кажучи, Докером називають платформу для розробки, доставки та запуску програмного забезпечення, в якій можна відокремити ваше ПЗ від вашої інфраструктури. Таким чином, зібраний контейнер можна запускати на різних ОС. Крім того, вам буде приємно дізнатися, що платформа Docker підтримує SSL, що дає відмінний ступінь інформаційно-мережевої безпеки при роботі з нею, зокрема, при тестуванні роботи додатків. Контейнеризована інформація містить:
Є 2 шляхи налаштування: за допомогою командного рядка та використовуючи конфіг. Робота в ком рядку виглядає так:
proxy.example.com:Port, вам треба дізнатися айпі адресу свого proxy і використовуваний port.docker build, яка створює конфіг. У ній необхідно використовувати аргумент --build-arg. Повна команда виглядатиме таким чином:
Bashdocker build --build-arg HTTP_PROXY="http://proxy.example.com:Port" .
docker run для запуску створеного конфігу. Необхідно використовувати аргумент --env. Повна команда виглядатиме наступним чином:
Bashdocker run --env HTTP_PROXY="http://proxy.example.com:Port" redis
Налаштування Docker проксі за допомогою конфігу виглядає так:
.docker. В ній має бути файл, названий config.json. Створіть його у разі відсутності.{
"proxies": {
"default": {
"httpProxy": "http://proxy.example.com:Port",
"httpsProxy": "https://proxy.example.com:Port",
"ftpProxy": "https://proxy.example.com:Port",
"noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
}
}
}
proxy.example.com:Port мають бути вказані дані вашого айпі та port, як і в прикладі з ком рядком.Аналогічні варіанти проксі ви повинні використовувати і при роботі з ком рядком, залежно від того, яким є ваш проксі. Після збереження файлу конфігу docker proxy, вказані вами відомості будуть застосовуватися до всіх нових контейнерів і для вже готових контейнерів, що завантажуються з репозиторію Докера.
Хочете бачити наші нові статті в Google? Додайте StableProxy до бажаних джерел.
Якщо ваші проксі вимагають аутентифікації за логіном та паролем, їх необхідно додати безпосередньо в URL-адресу проксі всередині конфігураційного файлу або команди. Формат запису виглядає так: http://username:[email protected]:Port. Зверніть увагу: якщо пароль містить спецсимволи (наприклад, @, :, /), їх потрібно закодувати у форматі URL-encode.
Конфігурація, прописана у файлі ~/.docker/config.json, застосовується як параметри середовища (environment variables) виключно в момент створення або запуску нових контейнерів. Вже запущені контейнери не можуть динамічно зчитувати зміни з цього файлу. Щоб вони почали працювати через проксі, їх необхідно зупинити, видалити та запустити заново.
Для того щоб сам Docker міг завантажувати образи (виконувати docker pull) через проксі, налаштувань користувача в config.json недостатньо. Потрібно налаштувати проксі для системної служби (Docker daemon). У системах Linux це робиться через створення файлу конфігурації за шляхом /etc/systemd/system/docker.service.d/http-proxy.conf із зазначенням змінних середовища HTTP_PROXY та HTTPS_PROXY, після чого потрібно перезапустити службу командою systemctl restart docker.
Для цього використовується параметр noProxy у файлі конфігурації або аргумент --env NO_PROXY="...". У ньому через кому вказуються доменні імена, хости або підмережі, трафік до яких має йти напряму. Обов'язково додавайте туди значення localhost, 127.0.0.1, а також маску внутрішньої мережі вашого Docker-середовища, щоб не заблокувати міжконтейнерну взаємодію.
Так. Файл config.json задає дефолтні (глобальні) налаштування для всіх контейнерів. Якщо вам потрібно, щоб певний контейнер працював через інші проксі, просто перевизначте змінні середовища безпосередньо під час його запуску за допомогою ключів -e HTTP_PROXY="..." та -e HTTPS_PROXY="..." у команді docker run. Параметри командного рядка мають вищий пріоритет.
Офіційно Docker у файлі config.json очікує параметри httpProxy та httpsProxy. Проте багато сучасних інструментів та базових образів підтримують протокол SOCKS5, якщо вказати його в схемі URL: socks5://proxy.example.com:Port або socks5h://... (щоб DNS-запити також йшли через проксі). Якщо якийсь конкретний софт всередині контейнера не підтримує socks, доведеться використовувати сторонні утиліти для конвертації трафіку (наприклад, proxychains або privoxy).
StableProxy
© StableProxy – 2021 - 2026 – Ukraine
