文档章节

记在解决GitLab-CI下的Docker编译推送问题后

dingdayu
 dingdayu
发布于 2018/05/09 21:44
字数 484
阅读 360
收藏 0

问题描述

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

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

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即可

admin >> application_settings >> Container Registry

unauthorized: authentication required on docker push to a different repo

相关链接

© 著作权归作者所有

dingdayu

dingdayu

粉丝 34
博文 119
码字总数 59598
作品 3
海淀
后端工程师
私信 提问
在 GitLab CI 中使用 Docker 构建 Go 项目

本文导航 -介绍01% -dep07% -Docker 构建镜像17% -内部依赖关系27% -项目文件58% -缺少了什么85% 介绍 这篇文章是我在 CI 环境(特别是在 Gitlab 中)的 Docker 容器中构建 Go 项目的研究总结...

作者: Sean Drumm
2018/05/10
0
0
在 GitKab CI 中使用 Docker 构建 Go 项目

介绍 这篇文章是我在 CI 环境(特别是在 Gitlab 中)的 Docker 容器中构建 Go 项目的研究总结。我发现很难解决私有依赖问题(来自 Node/.NET 背景),因此这是我写这篇文章的主要原因。如果 ...

作者: Sean Drumm
2018/05/10
0
0
通过Docker容器运行持续集成/持续部署

本文讲的是通过Docker容器运行持续集成/持续部署,【编者的话】 对于Docker主流的应用场景:持续集成和持续部署(CI/CD)大家也许并不陌生。这篇文章从独特的视角阐述了如何利用各种云平台构建...

轩墨
2017/09/20
0
0
gitlab-runner 配合docker 构建自动化部署

搭建gitlab-ci 自动化部署 安装 gitlab ci runner 查看是否运行正常 设置Docker权限 为了能让gitlab-runner 能正确的执行docker命令,需要把gitlab-runner 用户添加到docker group里,然后重...

D_Kim
2018/10/29
101
0
使用 Gitlab CI 构建 web 应用

铁路领域是一个快速变化的环境。为了更快地为你提供最新的改进和修复,Captain Train这个web-app要经常进行更新,有时每天要更新多次。 你是不是很想知道我们是如何平滑地构建和部署这个app...

donhui
2016/07/25
3.3K
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
551
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
32
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
17
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
52
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
58
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部