You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建AWS Lambda镜像遇代理故障:拉取及yum更新失败

问题解决:GFW环境下Docker构建AWS Lambda镜像的代理问题

问题1:Docker Build拉取public.ecr.aws基础镜像失败

症状

执行docker build时卡在FROM public.ecr.aws/lambda/python:3.11步骤,报错无法获取ECR匿名token,但单独执行docker pull public.ecr.aws/lambda/python:3.11可成功拉取。

原因

Docker daemon的HTTPS_PROXY配置错误——本地VPN代理通常使用HTTP协议监听,而非HTTPS。

解决方案

  1. 修正/etc/systemd/system/docker.service.d/http-proxy.conf中的代理配置:
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890/"
Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1,internal.ecr.aws"
  1. 重启Docker服务使配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 验证配置是否加载成功:
systemctl show --property=Environment docker

输出应包含正确的代理环境变量。


问题2:修正代理后Dockerfile中yum update -y失败

症状

拉取基础镜像成功,但执行yum update时提示无法连接127.0.0.1:7890。

原因

容器内部的127.0.0.1指向容器自身网络栈,而非宿主机的代理服务,因此无法访问宿主机的VPN端口。

解决方案

提供两种可行方案,按需选择:

方案1:构建时传递宿主机代理IP参数

  1. 获取宿主机的局域网IP(如192.168.1.100,可通过ip addr show查看)。
  2. 修改构建命令,通过--build-arg传递代理参数:
docker build --progress=plain --platform="linux/x86_64" --no-cache -t projects/my-project . -f projects/my-project/Dockerfile \
  --build-arg HTTP_PROXY=http://<宿主机局域网IP>:7890 \
  --build-arg HTTPS_PROXY=http://<宿主机局域网IP>:7890 \
  --build-arg NO_PROXY=localhost,127.0.0.1
  1. 在Dockerfile中引用这些参数(确保在RUN yum update前设置):
ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY

ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY
ENV NO_PROXY=$NO_PROXY

RUN yum update -y

方案2:使用宿主机网络构建

直接让容器共享宿主机网络栈,这样容器内的127.0.0.1即可指向宿主机代理:

docker build --progress=plain --platform="linux/x86_64" --no-cache -t projects/my-project . -f projects/my-project/Dockerfile --network=host

注意:确保VPN工具已开启“允许局域网连接”权限,避免端口访问被限制。


内容的提问来源于stack exchange,提问作者Alex Friedmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:47:27