您可能会在这里遇到 ECR 插件中报告的错误:https ://issues.jenkins-ci.org/browse/JENKINS-44143
该线程中的不同人描述的症状略有不同,但共同的主题是 docker 未能使用由 ECR 插件正确生成的身份验证详细信息。
我发现在我的案例中,这是因为 ECR 插件正在保存到一个 docker 配置中,而 docker-commons 插件(它处理 docker API 的实际工作)正在从另一个中读取。Docker 在早期版本中更改了导致冲突的配置格式和位置。
插件作者提供了一种解决方法,基本上只是先核对两个配置文件:
node {
//cleanup current user docker credentials
sh 'rm ~/.dockercfg || true'
sh 'rm ~/.docker/config.json || true'
//configure registry
docker.withRegistry('https://ID.ecr.eu-west-1.amazonaws.com', 'ecr:eu-west-1:86c8f5ec-1ce1-4e94-80c2-18e23bbd724a') {
//build image
def customImage = docker.build("my-image:${env.BUILD_ID}")
//push image
customImage.push()
}
您可能想尝试将其纯粹作为调试步骤和快速修复(如果它有效,您可以确信这个错误是您的问题)。
我的永久修复是简单地使用合理的默认值手动创建新样式 dockercfg,然后将环境变量设置为指向它。
我在我的 Dockerfile 中这样做了,它创建了我的 Jenkins 实例,如下所示:
RUN mkdir -p $JENKINS_HOME/.docker/ && \
echo '{"auths":{}}' > $JENKINS_HOME/.docker/config.json
ENV DOCKER_CONFIG $JENKINS_HOME/.docker