Gitlab 集成 Docker registry 使用笔记

标准
赞 (11)

最近也没什么人写团队博客了,大半夜的在实验室通宵干活也挺无聊的,写点心路历程什么的也不太有意思,就来写点技术的东西好了。

Gitlab在8.8的时候开始有个内置的Docker registry了。(ref: GitLab Container Registry)

这一套东西有什么用呢,简单理解一下就是:我可以写一个dockerfile,然后利用gitlab自己的CI(持续集成)配置文件.gitlab-ci.yaml来自动的完成一个docker镜像的构建、测试和【发布】。重点在这个发布上,docker镜像一般都托管在docker.io上,要么就自己建一个私有的,维护起来都有一丢丢麻烦。内置的这个Docker registry就可以作为私有的来发布东西了,方便了不少。

gitlab 帮助 – using-the-gitlab-container-registry

一般来说,按照帮助文档来一点问题都没有是不太科学的,总会出点奇奇怪怪的问题。在这里和大家分享一下解决问题的思路。

我写了个docker的项目,发现自动构建镜像的时候docker login能成功,但是docker push就会失败。提示unauthorized: authentication required。

那么第一,不想为什么,先搜索报错信息和关键词。

我搜的关键词是 docker + push + unauthorized,然后我找到了这篇文章:http://dockone.io/article/865

92f49e7a-5373-48e2-b102-a189ca5b6543

那接下来就要去找对于gitlab内置的registry,这个配置在什么地方

gitlab只有一个配置文件,在/etc/gitlab/gitlab.rb,但是搜索了一下,没有proxy_set_header这么一个东西。我想到一个可能,或许是后来更新的参数,我用的老版本的配置文件,所以没有注释。就去找了最新的配置文件模版(gitlab.rb.template)

然后大失所望,https就已经是默认参数了。

4e4ff30c-2451-47a2-b727-7df3d392a824

接下来就根据经验来推测和一点一点搜资料了。

没有耐心的同学估计看到这里就要打瞌睡了,快进一下,经过2小时的搜索。。。我基本上把和这个相关的gitlab-ce的issue和docker的issue都翻了一遍,其中导致unauthorized的bug还是不少的,要么是和我的情况不符,要么已经修复了。

突然一个讨论戳中了我:4b60ceb2-efbf-49be-8535-92db8224487f

看看自己代码里写的:CONTAINER_RELEASE_IMAGE: $REGISTRY/$IMAGE_NAME:latest  问题就出在这个syntax checking上。看看gitlab的帮助:

efdc5333-1dc9-4f4a-b11e-3281e4f0f266

最后是没有按照gitlab给的格式写才出的错。。。心累到不想说话。。。

 

好了最后总结一下我排错的思路:

  1. 先搜一下,看看有没有现成的解决方案。
  2. 没有和你情况差不多的解决方案,就要靠自己发挥了,猜一下问题可能是哪里来的,换一换关键词继续搜。
  3. 耐心看英文的资料

 

感谢大家看到最后,祝各位写代码少出bug。: )

 

Leave a Reply

%d 博主赞过: