GitLab Container Registry找不到Docker Compose推送成功的镜像问题求助
问题排查步骤
- 镜像标签格式不匹配(最高发原因)
GitLab Container Registry 要求镜像标签必须严格遵循registry.gitlab.com/<用户名/组名>/<项目名>/<自定义镜像名>:<版本>的规则,Docker Compose 默认生成的镜像标签为<compose项目名_服务名>:latest,不带GitLab Registry前缀,此时执行推送命令实际是将镜像推到本地缓存或Docker Hub公共仓库,不会同步到你的GitLab项目仓库。
你需要在docker-compose.yml中显式指定完整的镜像标签:
services: 你的服务名: build: . # 替换为你自己的GitLab Registry镜像路径 image: registry.gitlab.com/你的组名/你的项目名/你的服务名:v1.0.0
配置完成后先执行docker compose build重新打标签,再执行推送操作。
未完成GitLab Registry身份认证
推送前必须先执行docker login registry.gitlab.com,用户名填你的GitLab账号名,密码填带有write_registry权限的个人访问令牌(GitLab已默认禁用账号密码直接登录Registry,直接填账号密码会静默鉴权失败),确认返回登录成功提示后再执行docker compose push。项目Registry权限配置错误
进入目标GitLab项目的「设置→可见性、功能、权限」页面,确认Container Registry功能开关已开启,且你使用的账号对该项目至少拥有「开发者」及以上权限。镜像推送路径错误
执行docker images | grep 你的镜像名核对实际生成的镜像标签路径是否和目标项目一致,如果路径中的组名、项目名拼写错误,镜像会被推到其他对应路径的项目中,你无权限的情况下就无法查看。
内容的提问来源于stack exchange,提问作者Ranji Raj
相关产品推荐
相关产品推荐

