使用Colima运行sam local start-api时遇DNS解析错误求助
解决Colima无法解析public.ecr.aws的问题
问题现象
使用Colima运行Python应用时触发DNS解析错误,无法访问AWS公共容器镜像仓库:
Lambda functions containers initialization failed because of Error building docker image: creating build container: initializing source docker://public.ecr.aws/lambda/python:3.9-x86_64: pinging container registry public.ecr.aws: Get "https://public.ecr.aws/v2/": dial tcp: lookup public.ecr.aws: no such host Error: Lambda functions containers initialization failed
本地nslookup public.ecr.aws可正常解析域名,docker pull hello-world操作正常,Colima状态显示基于macOS Virtualization.Framework运行,架构为aarch64。
解决方案
1. 检查并修正Colima虚拟机内部DNS配置
进入Colima虚拟机查看当前DNS设置:
colima ssh cat /etc/resolv.conf
若显示的DNS服务器与本地nslookup输出的有效服务器不一致,手动替换:
sudo echo "nameserver XX.XXX.XX.X" > /etc/resolv.conf
将XX.XXX.XX.X替换为本地nslookup中显示的有效DNS服务器地址。
2. 重启Colima并指定DNS服务器
若临时修改配置无效,直接重启Colima并指定可靠DNS:
colima stop colima start --dns XX.XXX.XX.X
可选择公共DNS如8.8.8.8,或本地路由器提供的DNS地址。
3. 切换Colima网络模式
默认的user-networking模式可能存在DNS隔离问题,切换到vmnet模式让Colima复用主机网络栈:
colima stop colima start --network vmnet
4. 适配架构拉取镜像
当前Colima为aarch64架构,尝试拉取对应架构的Lambda镜像(或开启多架构构建支持):
- 直接拉取arm64版本镜像:
docker pull public.ecr.aws/lambda/python:3.9-arm64
- 开启Docker多架构构建支持:
docker buildx create --use
验证操作
完成上述配置后,先测试拉取目标镜像确认问题解决:
docker pull public.ecr.aws/lambda/python:3.9-x86_64
镜像拉取成功后,重新运行Python应用即可。
内容的提问来源于stack exchange,提问作者Tanu
相关产品推荐
相关产品推荐

