Перейти к основному содержимому

Настройка прокси в Docker

· 3 мин. чтения

1. Обзор

Мы предоставим настройки прокси-сервера как для Docker Engine, так и для клиента Docker, чтобы они могли подключаться к Интернету, когда прямой доступ к Интернету не разрешен при использовании Docker. Когда мы используем Docker в корпоративных сетях или частных облаках, нам обычно приходится подключаться к Интернету через прокси-сервер. В этих случаях нам нужно использовать прокси.

В этом руководстве мы узнаем, как устранять проблемы, с которыми мы можем столкнуться при настройке прокси-сервера с помощью Docker.

2. Что такое прокси

Прокси-сервер контролирует и направляет трафик между запрашивающим пользователем и веб-сайтами . Проксирование направлено на защиту пользователей и поддержание политики сетевой безопасности и конфиденциальности. Без прокси пользователь отправляет запрос напрямую на целевой сервер и получает ответ:

./e7d0e0f4412e163e249636cd296ea6ed.png

Когда мы используем прокси, наш запрос сначала идет на прокси-сервер, а затем прокси обращается к целевому серверу . Как показано на изображении ниже, прокси находится между клиентом и целевым сервером, и каждый запрос от клиента сначала поступает на прокси, а затем прокси предоставляет доступ к целевому серверу:

./e3b544158569e96c0b534c09130de17c.png

3. Настройте прокси-сервер Docker

В Docker 17.07 и выше мы можем настроить клиент Docker для автоматической передачи информации о прокси в контейнеры. В Docker 17.06 и более ранних версиях мы можем установить параметры прокси-сервера клиента Docker с помощью переменных среды.

Давайте добавим следующий пример JSON в файл ~/.docker/config.json и завершим настройку нашего прокси. Поддерживается использование символа * в качестве подстановочного знака для хостов и нотации CIDR для IP-адресов:

{ 
"proxies":
{
"default":
{
"httpProxy": "http://<ip-address>:<port>",
"httpsProxy": "https://<ip-address>:<port>",
"noProxy": "*.<domain>,127.0.0.0/8"
}
}
}

Когда мы сохраним изменения, каждый контейнер Docker будет создан с переменными среды, указанными в файле config.json , и наши настройки прокси будут действительными.

4. Настройки прокси-сервера

Мы должны использовать переменные среды HTTP_PROXY, HTTPS_PROXY, FTP_PROXY и NO_PROXY для настройки прокси - служб для демона Docker. Рассмотрим эти переменные подробнее:

  • HTTP_PROXY — это тип прокси-сервера, выступающего в роли промежуточного сервера между клиентом и веб-сервером. С прокси-сервером HTTP запрос не идет на сайт; он идет на прокси в виде обычного текста. Прокси анализирует это, а затем отправляет новый запрос на веб-сайт, (необязательно) изменяя наш IP-адрес, используя данные, предоставленные с запросом. Веб-сайт получает его и отправляет ответ на прокси. Затем прокси пересылает ответ нам.
  • HTTPS_PROXY более безопасен и более анонимен, чем HTTP-прокси. Протокол HTTPS не передает данные в текстовом формате. Уровень SSL шифрует данные, чтобы они никогда не были видны третьим лицам.
  • FTP_PROXY управляет активными и пассивными сеансами FTP. Он также защищает FTP-сервер и ограничивает команды протокола FTP между клиентом и сервером.
  • Параметр NO_PROXY используется для указания адресов, для которых не следует использовать прокси.

5. Вручную настройте параметры прокси

В Docker 17.07 и более ранних версиях мы должны установить параметры прокси-сервера с флагом –env :

docker run [docker_image] --env FTP_PROXY="ftp://<ip-address>:<port>"
docker run [docker_image] --env HTTP_PROXY="http://<ip-address>:<port>"
docker run [docker_image] --env HTTPS_PROXY="https://<ip-address>:<port>"
docker run [docker_image] --env NO_PROXY="*.<domain>,127.0.0.0/8"

Или мы должны добавить их в наш Dockerfile :

ENV FTP_PROXY="ftp://<ip-address>:<port>"
ENV HTTP_PROXY="http://<ip-address>:<port>"
ENV HTTPS_PROXY="https://<ip-address>:<port>"
ENV NO_PROXY="*.<domain>,127.0.0.0/8"

С помощью этих операций мы теперь можем выполнять наши прокси-операции Docker.

6. Заключение

В этом руководстве мы узнали, что такое прокси и как его настроить в разных версиях Docker.