Настройка работы Docker через прокси

  • 25.08.2022
  • 7 040
  • 2
  • 6
  • 5
  • 1
Настройка работы Docker через прокси

Работая с Docker в сети, где доступ в Интернет организован через прокси-сервер, можно столкнуться с тем, что по умолчанию Docker работать через прокси-сервер не будет. Для того, чтобы включить использование прокси-сервера в Docker, нужно проделать одно из ниже описанных действий.

Настройка переменных в /etc/sysconfig/docker

  1. Открываем любым текстовым редактором файл /etc/sysconfig/docker, и добавляем туда следующие строки:
    export HTTP_PROXY="http://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]"
    export HTTPS_PROXY="http://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]"

    К примеру, если у вас в сети используется прокси с адресом 192.168.2.200, который работает на порту 3128, и не требует авторизации, то выглядеть это будет следующим образом:

    export HTTP_PROXY="http://192.168.2.200:3128"
    export HTTPS_PROXY="http://192.168.2.200:3128"

    В случае, если требуется авторизация логином user и паролем p4ssw0rd, то следует их добавить перед адресом сервера:

    export HTTP_PROXY="http://user:p4ssw0rd@192.168.2.200:3128"
    export HTTPS_PROXY="http://user:p4ssw0rd@192.168.2.200:3128"
  2. Внеся все необходимые изменения, следует перезагрузить сервис Docker:
    service docker restart
  3. После этого, Docker должен быть настроек к работе с прокси-сервером.

Настройка переменных в /etc/systemd/system/docker.service.d/http-proxy.conf

  1. Создадим директорию по пути /etc/systemd/system/docker.service.d:
    mkdir /etc/systemd/system/docker.service.d
  2. Создадим файл /etc/systemd/system/docker.service.d/http-proxy.conf и внесем туда следующие строки:
    [Service]
    Environment="HTTP_PROXY="http://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]/"
    Environment="http://[ЛОГИН]:[ПАРОЛЬ]@[АДРЕС]:[ПОРТ]/"
    Environment="NO_PROXY=[АДРЕС 1],[АДРЕС 2]"

    Соответственно, если мы хотим использовать сервер прокси с адресом 192.168.2.200, на порту 3128 и с авторизацией по логину user и паролем p4ssw0rd, то содержимое будет иметь следующий вид:

    [Service]
    Environment="HTTP_PROXY=http://user:p4ssw0rd@192.168.2.200:3128/"
    Environment="HTTPS_PROXY=http://user:p4ssw0rd@192.168.2.200:3128/"
    Environment="NO_PROXY=main.corp.local,192.168.2.1"

    Так же ниже указаны адреса main.corp.local и 192.168.2.1, для работы с которыми не требуется использовать прокси-сервер.

  3. После завершения редактирования файла конфигурации, перезагрузим сервис systemd:
    systemctl daemon-reload
  4. Так же перезагрузим сервис Docker:
    systemctl restart docker
  5. Теперь, Docker должен будет использовать прокси-сервер.

Возможные ошибки

Если при работе с Docker вы получаете ошибку примерно следующего содержания:

Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: tls: first record does not look like a TLS handshake.

То проверьте, что вы указали в переменной HTTP_PROXY и HTTPS_PROXY - возможно там указан адрес прокси с протоколом https, но при этом, ваш прокси умеет работать только по протоколу http. Так же, не лишним будет проверить указанный в конце порт - возможно, ваш прокси и умеет работать по протоколу https, но на другом порту.

Была ли эта статья Вам полезна?

Комментарии к статье (2)

    • Гость

    пароли бывают со спец символами

    • Дмитрий

    Сработало! Благодарю!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.