English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Фон
В некоторых лабораторных условиях серверы не имеют прямого доступа к внешней сети и требуют использования прокси-сервера. Мы обычно будем configuring прокси-серверы напрямую в файлах конфигурации, таких как /etc/environment, /etc/profile, что подходит для большинства операций. Однако, команды docker не могут использовать эти прокси.
Например, при использовании docker pull для загрузки образа из Интернета может возникнуть следующая ошибка:
$ docker pull hello-world Не удалось найти образ 'hello-world:latest' локально Загрузка репозитория docker.io/library/hello-world docker: Время ожидания сети истекло при попытке подключения к https://index.docker.io/v1/repositories/library/hello-world/images. Возможно, вам стоит проверить ваше интернет-соединение или если вы за прокси. См. 'docker run --help'.
ps: Эта статья была протестирована на Ubuntu 16.04.
Решение одно:
Остановите службу docker, чтобы вручную запустить демон docker с использованием 2375 порта для прослушивания всех сетевых интерфейсов.
$ systemctl stop docker.service $ nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &
Решение два:
Редактируйте файл конфигурации, в Ubuntu это /etc/default/docker, в CentOS это /etc/sysconfig/docker. Однако редактирование этих файлов для настройки демона уже не рекомендуется. Не рекомендуется использовать этот метод.
HTTP_PROXY="http://[proxy-addr]:[proxy-port]/" HTTPS_PROXY="https://[proxy-addr]:[proxy-port]/" export HTTP_PROXY HTTPS_PROXY
Решение три:
Этот метод является постоянным, изменения будут применяться всегда. Этот метод перекрывает стандартный файл docker.service.
1. Создание внутреннего каталога systemd для услуги docker
$ mkdir -p /etc/systemd/system/docker.service.d
2. Создайте файл /etc/systemd/system/docker.service.d/http-proxy.conf и добавьте переменную среды HTTP_PROXY. Измените [proxy-addr] и [proxy-port] на фактический адрес и порт прокси-сервера:
[Service] Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/"
3. Если还存在内部不需要使用代理访问的Docker регистров, то необходимо определить переменную среды NO_PROXY:
[Service] Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
4. Обновление конфигурации:
$ systemctl daemon-reload
5. Перезапуск услуги Docker:
$ systemctl restart docker
Вот весь контент статьи, мы надеемся, что он поможет вам в изучении, и также надеемся, что вы будете активно поддерживать руководства по呐喊.
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, загружен пользователями самостоятельно, сайт не имеет права собственности, не прошел редактирование, не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. Если будет установлено, что содержимое нарушает авторские права, сайт немедленно удалят涉嫌侵权的内容。