【问题标题】:Not able to download the packages using Docker Build无法使用 Docker Build 下载软件包
【发布时间】:2020-07-09 14:52:21
【问题描述】:

我正在使用 DockerFile 创建一个 docker 映像。 当我执行 docker build 命令时出现错误,以下是详细信息

docker build -f Dockerfile.app --no-cache --rm --label 'APS_INFO=OS/CentOS/7.6/-baseurl=http://repo.lab.pl.nikhil.com/centos-remote/7.7.1908/os/x86_64/-' --label BUILDTIME=2020-03-29T09:26:54+0530 --build-arg=BASE_IMAGE=nikhil/myrepo/linuximsbase:20.5_11-Mar-2020 --build-arg=IMAGE_BUILD=admincli -t nikhil/myrepo/admincli:latest -t nikhil/myrepo/admincli:_29-Mar-2020 .

(yum:77): libdnf-WARNING **: 03:57:29.180: Skipping refresh of base: cannot update repo 'base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried; Last error: Curl error (28): Timeout was reached for http://repo.lab.pl.nikhil.com/centos-remote/7.7.1908/os/x86_64/repodata/repomd.xml [Connection timed out after 30001 milliseconds]

我已经使用 HTTP_PROXY 启动了 docker 服务

....
Environment="NO_PROXY=localhost,10.200.200.3,127.0.0.1"
Environment="HTTP_PROXY=http://10.158.100.6:8080/"
Environment="HTTPS_PROXY=https://10.158.100.6:8080/"
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
....

您能帮我创建 Docker 映像有什么问题吗?

注意:如果我在 barshrc 中设置相同的代理详细信息,我可以连接并下载 repodata 文件。

【问题讨论】:

  • 问题似乎与您的 docker 映像有关。基础镜像创建不正确,它也会超时。
  • 请删除 bashrc 文件中的代理配置。并重试。除非您想直接从 Internet 下载某些内容,否则您不需要它。我也来自诺基亚,非常了解您的问题。 :)
  • @vijay,我已经从 bashrc 文件中删除了代理,即使遇到同样的问题...
  • 您是否在 dockerfile 中复制任何 centos repo 配置?您能否确认您的基础 docker 映像是否没有在其环境或 centos 存储库中添加任何代理设置?
  • @Vijay,是的,我在 DockerFile 中复制了 centos repo 配置,并启用了代理。基础镜像在环境和centos repo 中没有设置任何代理。 bash-4.2# env HOSTNAME=8a5866732836 TERM=xterm IMAGE_BUILD_ENV=linuximsbase.env IMAGE_BUILD_ENV_PATH=base-images/linuximsbase.env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin :/sbin:/bin PWD=/ SHLVL=1 HOME=/root _=/usr/bin/env

标签: docker containers yum dnf


【解决方案1】:

代理配置需要通过 build args 提供,例如:

docker build \
  --build-arg http_proxy=http://10.158.100.6:8080 \
  --build-arg https_proxy=http://10.158.100.6:8080 \
  ...

【讨论】:

  • 代理已在 docker 服务文件中设置。它不需要作为参数提供给 docker build。
  • @Nikhil 您是否尝试了我的建议,或者您只是认为您不需要它?请尝试一下。您已通过 env 变量为 docker daemon 配置代理,而不是为构建容器配置代理。请再试一次。
  • 嗨,我在试用后发表评论。我已经尝试了所有可能的事情。 1. 将代理详细信息作为参数传递给 docker 2. 在 DockerFile 中为代理设置环境变量 3. 在 ~/.docker/config.json 文件中配置代理 尝试所有这些组合,没有运气。
  • @Nikhil 请删除所有组合:1. Passing proxy details as arguments to docker 2. Setting environment variables for proxy in DockerFile 3. Configuring proxies in ~/.docker/config.json file 并仅使用构建参数--build-arg http_proxy=http://10.158.100.6:8080。您正在混合您在不知道其后果的情况下发现的随机选项。
  • 好的。我按照建议清理了所有内容,并将代理详细信息作为 docker 参数提供。仍然没有运气,面临同样的问题。
猜你喜欢
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
相关资源
最近更新 更多