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

Настройка работы 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, но на другом порту.

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

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

Ваш адрес email не будет опубликован.

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