#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 в Интернете, чтобы получить базовые изображения. Если вы не можете заставить это работать с вашим прокси, вы можете либо
- предварительно загрузите локальный кэш необходимыми изображениями
- настройте реестр 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
Я не вижу никакой зависимости вашего контейнера от времени выполнения в Интернете. Таким образом, запуск контейнера будет работать без проблем.