推送镜像至GitLab容器注册表后缺失manifest digest求助
解决Docker镜像推送后Manifest Digest缺失问题
以下是排查和解决的具体步骤:
对齐Docker版本
不同Docker版本的manifest处理逻辑可能存在差异,执行docker --version查看你和同事的版本,将你的Docker升级到和同事一致的稳定版本——旧版本可能存在推送时未正确生成digest的bug。验证本地镜像的RepoDigests
推送前先确认本地镜像是否已生成digest:docker inspect <destination>/<path to X.web>:tag | grep RepoDigests如果无返回结果,说明本地镜像构建过程存在异常,需重新构建后再推送。
强制重新推送镜像
添加--force参数强制覆盖远程镜像,避免因推送中断或注册表缓存导致的manifest不完整:docker push --force <destination>/<path to X.web>:tag docker push --force <destination>/<path to X.webapi>:tag清理缓存后重新构建推送
本地镜像缓存可能引发构建异常,执行以下命令清理缓存并重新构建:# 删除本地目标镜像 docker rmi <destination>/<path to X.web>:tag <destination>/<path to X.webapi>:tag # 无缓存构建镜像 docker-compose build --no-cache X.web X.webapi # 重新推送 docker push <destination>/<path to X.web>:tag docker push <destination>/<path to X.webapi>:tag检查推送日志的异常信息
推送时留意终端输出,若存在网络中断、权限警告等信息,针对性解决:比如确认网络连接稳定,检查账号对目标注册表是否有完整写入权限。
内容的提问来源于stack exchange,提问作者Yousbaff
相关产品推荐
相关产品推荐

