AWS CodeBuild本地构建提示版本过旧但未指明对象的问题排查
问题分析与解决
版本来源说明
报错中的1.22是AWS CodeBuild本地构建镜像(public.ecr.aws/codebuild/local-builds:latest)内置的Docker客户端API版本,而1.24是你本地Docker守护进程要求的最低兼容客户端API版本。你本地Docker 25.0.3对应的API版本是1.44,远高于1.24,但镜像里的Docker客户端版本太旧,无法和高版本Docker守护进程通信。
解决步骤
确认本地Docker API版本
执行以下命令查看Docker守护进程的API版本:docker version --format '{{.Server.APIVersion}}'你会得到类似
1.44的结果,这是Docker 25.0.3对应的API版本。使用匹配版本的CodeBuild本地镜像
AWS为不同Docker版本提供了对应的local-builds镜像标签,你需要替换命令中的镜像为与本地Docker版本兼容的标签。例如,对应Docker 25.x的镜像标签可以用docker-25.0.3(如果该标签不存在,可使用docker-24.x系列标签,API向下兼容)。修改后的构建命令:
codebuild_build.sh -i my-builder -a /tmp/aws-codebuild -c public.ecr.aws/codebuild/local-builds:docker-25.0.3(
-c参数用于指定自定义的CodeBuild本地构建镜像)验证修复
重新执行上述命令,即可避免版本不匹配的报错。
额外说明
- 不要使用
latest标签的local-builds镜像,它的版本通常滞后,容易和新环境不兼容。 - 你的
docker-compose 1.29.2版本与此问题无关,无需升级。
内容的提问来源于stack exchange,提问作者Woodsman
相关产品推荐
相关产品推荐

