前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原 记在解决GitLab-CI下的Dock

原 记在解决GitLab-CI下的Dock

作者头像
霡霂
发布2018-06-04 16:49:11
1.2K0
发布2018-06-04 16:49:11
举报
文章被收录于专栏:雨过天晴雨过天晴

问题描述

最近一直在测试GitLab下的Runner,并在其下实现CI,其中遇到Docker Image编译后推送到Gitlab的容器中心失败的问题.

在容器内执行完Docker镜像的编译后,自动推送到注册中心时,报如下错误:

代码语言:javascript
复制
c2bf021f0c8d: Layer already exists
cd7100a72410: Layer already exists
dcf1253999b2: Pushed
a7e843cd55f6: Pushed
4fef4efdeb56: Pushed
unauthorized: authentication required
ERROR: Job failed: exit code 1

解决问题

问题排查

  • 最初因为另一项目,有过成功的例子,所以一直将问题聚焦在Dockerfile上,可是后来本地编译成功,并且推送成功。
  • 不得不讲目标转移到gitlab-ci.yml的内容上;一步步调试,编译都没问题,一直都是最后Push时出现问题。
  • 根据提示是unauthorized认证问题,部分资料显示是前置行文的docker login有问题,在将cat ~/.docker/config.json文件打印调试后,发现问题也不在登陆上。
  • 接着排查,又有资料显示是nginx转发注册中心端口时的问题,提到http和https的问题:指登陆时走https,而推送镜像时走http。为此,又将gitlab重新配置了一番,幸好我是采用docker-compose的方式搭建的,否则太麻烦了。
  • 为了解决问题,我是换了各种关键词,百度谷歌无所不用。最后终于找到靠谱的问题记录,说是认证问题是由于授权Token失效的问题,因为官方推荐在CI中使用环境变量的方式登录,并推荐:"$CI_REGISTRY_USER" 和 "$CI_REGISTRY_PASSWORD"

问题解决

通过下面的操作路径,将容器注册中心的授权有效期改为50即可

代码语言:javascript
复制
admin >> application_settings >> Container Registry

unauthorized: authentication required on docker push to a different repo

相关链接

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
  • 解决问题
    • 问题排查
      • 问题解决
      • 相关链接
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档