Настройка прокси в Docker-контейнере - PullRequest
0 голосов
/ 29 октября 2018

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

FROM ubuntu:18.04
RUN apt-get update && apt-get install -y \
        build-essential \
        cmake

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

Я немного почитал в Интернете и устал от нескольких вариантов:

Вариант 1

FROM ubuntu:18.04
ENV http_proxy <HTTP_PROXY>
ENV https_proxy <HTTPS_PROXY>
RUN apt-get update && apt-get upgrade

https://stackoverflow.com/a/22184601

Вариант 2

FROM ubuntu:18.04
ENV http_proxy 'http://corporate_proxy:port'
ENV https_proxy 'http://corporate_proxy:port'

https://stackoverflow.com/a/30252882

Вариант 3

docker build --build-arg http_proxy=$http_proxy 
--build-arg https_proxy=$https_proxy -t mytest_docker .

На основе https://elegantinfrastructure.com/docker/ultimate-guide-to-docker-http-proxy-configuration/

Однако ни один из этих параметров не работает, и я получаю всегда одну и ту же ошибку:

Err:1 http://archive.ubuntu.com/ubuntu bionic InRelease
  Temporary failure resolving 'corporate_proxy'
Err:2 http://security.ubuntu.com/ubuntu bionic-security InRelease
  Temporary failure resolving 'corporate_proxy'
Err:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
  Temporary failure resolving 'corporate_proxy'
Err:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
  Temporary failure resolving 'corporate_proxy'
Reading package lists...
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic/InRelease  Temporary failure resolving 'corporate_proxy'

corporate_proxy - это просто заполнитель для фактического (рабочего) прокси.

Я уверен, что адрес прокси-сервера правильный и работает на хост-системе, потому что я обычно могу загрузить все. Проблема только в этом образе докера.

Любое предложение, как я могу решить это?


РЕДАКТИРОВАТЬ # 1

Основываясь на ответе @Raoslaw Szamszur, я немного больше отлаживал. К сожалению, результаты все те же.

Я добавил значения в файл config.json и перезапустил демон. Затем я попробовал еще раз сделать все мои варианты с тем же результатом.

Также я хотел запустить только докер Ubuntu, используя следующую строку:

docker run --name ubunut -it -p <port_http>:<port_http> -p <port_https>:<port_https> ubuntu:18.04

После запуска apt-get не может загрузить что-либо, печатающее ту же ошибку, что и ранее.

Также, как этот контейнер выглядел в списке

docker container ls --all
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                          NAMES
e6fdeaec3ad9        ubuntu:18.04        "/bin/bash"         3 minutes ago       Up 3 minutes        0.0.0.0:<http_port>-<https_port>-><http_port>-<https_port>/tcp   ubunut

1 Ответ

0 голосов
/ 29 октября 2018

Поскольку проблема может быть сложной, я постараюсь устранить неполадки здесь.

Вариант 1

Попробуйте сначала запустить чистый контейнер из образа Ubuntu и поэкспериментируйте с подключением через прокси. Но не забудьте связать порты:

docker run -dit --name=<conatiner-name> -p <proxy_port>:<proxy_port> ubuntu

Таким способом будет легче отлаживать проблему, а не редактировать Dockerfile и собирать его при каждом изменении. После того, как вы найдете рабочее решение, добавьте эти изменения в Dockerfile или зафиксируйте его в новом образе.

Вариант 2

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

Этот файл находится по пути:

/home/USERNAME/.docker/config.json

Попробуйте добавить это:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://corporate_proxy:port",
     "httpsProxy": "http://corporate_proxy:port",
     "noProxy": "*.test.example.com,.example2.com"
   }
 }
}

Настройка Docker для использования прокси-сервера

Мне трудно воспроизвести эту проблему, я буду продолжать думать о других возможностях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...