Docker推送镜像至Harbor时出现无效校验和摘要格式错误求助
Docker推送镜像至私有Harbor时出现"invalid checksum digest format"错误
问题详情
执行推送命令:
$ docker push harbor.wxtest.com/public/alpine-delrediskline:3.16.0-3
返回报错:
The push refers to repository [harbor.wxtest.com/public/alpine-delrediskline] 887d6ad1c9d4: Layer already exists c7c486fce125: Layer already exists 24302eb7d908: Layer already exists invalid checksum digest format
已尝试删除本地所有镜像后重新推送,问题依旧。
环境信息
Docker Info
$ docker info Client: Context: default Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 5 Server Version: 20.10.7 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: runc version: init version: Security Options: apparmor seccomp Profile: default Kernel Version: 5.11.0-1020-aws Operating System: Ubuntu 20.04.3 LTS OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.899GiB Name: weex-dev-lb ID: UX3F:6G5F:R67E:54QG:ZQGW:Y2PK:GMFA:SHI6:6EFA:VSDH:KAJP:UIUJ Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: harbor.phzt.weextest.com 10.7.4.53:30002 127.0.0.0/8 Live Restore Enabled: false
Docker Version
$ docker version Client: Version: 20.10.7 API version: 1.41 Go version: go1.13.8 Git commit: 20.10.7-0ubuntu5~20.04.2 Built: Mon Nov 1 00:34:17 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Engine: Version: 20.10.7 API version: 1.41 (minimum version 1.12) Go version: go1.13.8 Git commit: 20.10.7-0ubuntu5~20.04.2 Built: Fri Oct 22 00:45:53 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.5.9-0ubuntu1~20.04.4 GitCommit: runc: Version: 1.0.1-0ubuntu2~20.04.1 GitCommit: docker-init: Version: 0.19.0 GitCommit:
简化后的Jenkinsfile
pipeline { agent { node { label 'go' } } stages { stage('构建并推送镜像') { agent none steps { sh '''cat > Dockerfile <<EOF FROM nginx:latest EOF ''' container('go') { sh 'docker build --network host -t harbor.wxtest.com/public/nginx-test:v1adfea .' withCredentials([usernamePassword(credentialsId : 'harbor-new' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) { sh 'echo \"asdfea342dfFD3\" | docker login http://harbor.wxtest.com -u \"admin\" --password-stdin' sh 'docker push harbor.wxtest.com/public/nginx-test:v1adfea' } } } } } }
额外说明
- Harbor通过Helm部署在Kubernetes集群中,未配置SSL证书
- 该Harbor独立于生产环境的Harbor实例
排查与解决建议
- 清理Harbor仓库损坏数据:登录Harbor UI,找到目标仓库
public/alpine-delrediskline,删除所有关联的镜像版本后重新推送。 - 彻底重置本地Docker环境:
重置后重新构建镜像并推送。sudo systemctl stop docker sudo rm -rf /var/lib/docker sudo systemctl start docker - 检查Harbor存储状态:查看Kubernetes中Harbor的registry组件日志,确认存储卷(PV)是否存在读写异常,如有问题修复存储挂载或更换存储后端。
- 验证版本兼容性:确认当前Harbor版本与Docker 20.10.7是否兼容,若存在兼容问题,升级或降级Docker至匹配版本。
- 检查Jenkins构建逻辑:确保镜像构建过程未对镜像摘要(digest)进行非常规修改,避免使用可能破坏镜像完整性的构建参数。
内容的提问来源于stack exchange,提问作者Jason Tom
相关产品推荐
相关产品推荐

