Ошибка сборки Docker: «Не удалось подключиться к серверу» (за прокси-сервером) - PullRequest
0 голосов
/ 28 ноября 2018

Контекст: ОС: Windows 10 Pro;Docker ver: 18.09.0 (сборка 4d60db4);За корпоративным прокси используется CNTLM для решения этой проблемы .(в настоящий момент вытягивающий / работающий образ работает нормально)

Проблема: Я пытался создать следующий Dockerfile:

FROM alpine:3.5
RUN apk add --update \
    python3
RUN pip3 install bottle
EXPOSE 8000
COPY main.py /main.py
CMD python3 /main.py

Вот что я получил:

Sending build context to Docker daemon  11.26kB
Step 1/6 : FROM alpine:3.5
 ---> dc496f71dbb5
Step 2/6 : RUN apk add --update     python3
 ---> Running in 7f5099b20192
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.5/main: could not connect to server (check repositories file)
WARNING: Ignoring APKINDEX.c51f8f92.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.5/community: could not connect to server (check repositories file)
WARNING: Ignoring APKINDEX.d09172fd.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  python3 (missing):
    required by: world[python3]
The command '/bin/sh -c apk add --update     python3' returned a non-zero code: 1

Мне удалось получить доступ к URL-адресу из браузера, поэтому нет проблем с самим сервером.

Я подозревал, что это как-то связано с тем, что прокси не распространяется на контейнер, как объяснено в этот вопрос , так как я также не получил строку http_proxy при запуске docker run alpine env.Однако после ввода прокси в конфигурационный файл он наконец появился.Тем не менее проблема все еще существует.

Я также пытался изменить DNS в соответствии с инструкциями здесь , но проблема все еще не решена.

1 Ответ

0 голосов
/ 30 ноября 2018

Мне наконец-то удалось решить эту проблему, и виновником стали мои настройки в CNTLM.Для дополнительной информации, пожалуйста, проверьте этот пост .

Основная причина этой проблемы заключается в том, что док-контейнер не может получить доступ к Интернету изнутри виртуальной машины из-за неправильной настройки IP внутри CNTLM.ini.

Обычно CNTLM прослушивает 127.0.0.1:3128 по умолчанию для пересылки прокси.Я следовал по умолчанию и, таким образом, установил настройку прокси в Docker (для демона - через GUI , а для контейнера - от до config.json) также установлен в этот адреси порт.Оказывается, этот «локальный хост» не применяется к виртуальной машине, в которой находится докер, поскольку у виртуальной машины есть свой собственный локальный хост .Короче говоря, решение состоит в том, чтобы изменить этот адрес на IP-адрес dockerNAT (10.0.75.1:3128) во всех следующих местоположениях:

  • CNTLM.ini (на * 1023)* line. На самом деле, если мы используем CNTLM и для других целей, можно указать более одной Listen строки)
  • прокси-сервер демона Docker (через графический интерфейс настройки Docker)
  • Контейнер Docker config.json (обычно в C:\Users\<username>\.docker), добавив следующие строки:

    "proxies":
     {
       "default":
       {
         "httpProxy": "http://10.0.75.1:3128",
         "httpsProxy": "http://10.0.75.1:3128",
         "noProxy": <your no_proxy>
       }
     }
    

, также проверьте эти связанные сообщения:

...