Как мне создать контейнер docker за прокси-сервером компании?

#python #docker #dockerfile #docker-registry

#python #docker #dockerfile #docker-реестр

Вопрос:

Я пытаюсь создать простой контейнер docker на основе python. Я работаю в корпорации за прокси-сервером в Windows 10. Ниже приведен мой файл docker:

 FROM python:3.7.9-alpine3.11

WORKDIR ./

RUN pip install --proxy=http://XXXXXXX:8080 -r requirements.txt

COPY . /

EXPOSE 5000
CMD ["python", "application.py"]
  

Но это выдает мне следующие ошибки в cmd :

 "failed to solve with frontend dockerfile.v0: failed to build LLB: failed to load cache key: failed to do request: Head https://registry-1.docker.io/v2/library/python/manifests/3.7.9-alpine3.11: proxyconnect tcp: EOF"
  

Я пытался выяснить, как настроить прокси-сервер docker, используя множество ссылок, но они продолжают ссылаться на файл «/ etc / sysconfig / docker», который я нигде не могу найти в Windows 10 или, возможно, я не смотрю в нужное место.

Также я не уверен, что это проблема только с прокси, поскольку я видел, как люди сталкивались с этой проблемой без использования прокси. Я был бы очень признателен за чью-либо помощь. Работа в этой корпорации уже заставила меня потратить> 10 часов на то, на что у меня ушло 10 минут на моем Mac … : ( Спасибо

Комментарии:

1. Можно ли попросить разблокировать его?

Ответ №1:

Вы говорите о самых базовых функциях Docker. Обычно он должен подключаться к Docker Hub в Интернете, чтобы получить базовые изображения. Если вы не можете заставить это работать с вашим прокси, вы можете либо

  1. предварительно загрузите локальный кэш необходимыми изображениями
  2. настройте реестр Docker внутри вашего брандмауэра, который содержит все необходимые образы

Очевидно, что проще всего, вероятно, было бы выяснить, как заставить Docker подключаться к Docker Hub через ваш прокси.

Может ли это помочь с точки зрения того, чтобы заставить Docker в Windows работать с вашим прокси-сервером? — https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon

Вот что в нем говорится о настройке прокси:

 To set proxy information for docker search and docker pull, create a Windows environment variable with the name HTTP_PROXY or HTTPS_PROXY, and a value of the proxy information. This can be completed with PowerShell using a command similar to this:

In PowerShell:

    [Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://username:password@proxy:port/", [EnvironmentVariableTarget]::Machine)

Once the variable has been set, restart the Docker service.

In PowerShell: 

    Restart-Service docker

For more information, see Windows Configuration File on Docker.com.
  

Я также видел упоминание о том, что Docker для Windows позволяет устанавливать параметры прокси-сервера в своем интерфейсе GUI конфигурации.

Комментарии:

1. Точно! Но как мне настроить свой прокси-сервер, вот в чем вопрос? thegeekdiary.com/how-to-configure-docker-to-use-proxy кажется, это именно то решение, но оно ссылается на 2 метода, которые я не понимаю: 1) «Настройка прокси-переменных в файле / etc / sysconfig / docker» -> Где находится эта папка «etc» / где находится этот каталог в Windows 10? 2) «Настройка переменных среды», которыетребуется создать «выпадающий» в этой же папке «etc». Короче говоря: где найти » /etc/sysconfig / docker» под Windows 10?

2. Вы не можете использовать метод переменной среды, упомянутый в моем ответе? — В этом документе также упоминается файл конфигурации: C:ProgramDataDockerconfigdaemon.json — Я не знаю, является ли это эквивалентом /etc/sysconfig/docker

3. Спасибо за вашу помощь. Я только что выполнил в точности то, что вы предложили: прошел все шаги руководства Microsoft, установил переменные среды Windows HTTP_PROXY и HTTPS_PROXY, также установил их с помощью графического интерфейса Docker, а также установил их с помощью предложенных вами команд powershell и после этого перезапустил Docker. Даже при этом я получаю «Ответ об ошибке от daemon: Get mcr.microsoft.com/v2 : proxyconnect tcp: EOF» на первом шаге руководства Microsoft по извлечению базового образа docs.microsoft.com/en-us/virtualization/windowscontainers /…

4. Вау. Супер-обломщик: (. Извините, у вас столько проблем. Надеюсь, вы скоро это поймете!

Ответ №2:

Нет необходимости передавать информацию о прокси-сервере в Dockerfile.

Существуют предопределенные аргументы, которые можно использовать для этой цели. HTTP_PROXY HTTPS_PROXY FTP_PROXY

Вы можете передать детали при создании образа

https://docs.docker.com/engine/reference/builder/#predefined-args

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