是否可以在不使用CI运行程序的情况下登录Gitlabs容器注册表?

时间:2016-12-29 22:21:30

标签: docker deployment gitlab

是否可以从CI跑者上下文之外的脚本自动登录Gitlab注册表?

我有一个非常简单的部署过程,其中包含一个自制的脚本,简而言之:

  • 构建容器图片
  • 推送到registry.gitlab.com
  • 登录目标服务器
  • 从registry.gitlab.com拉出容器图片
  • 运行容器

与Gitlab注册表的每次互动都需要以下内容:

docker login registry.gitlab.com

将提示我的用户名/密码。我希望能够做到这样的事情:

docker login -u <username> -p <password> registry.gitlab.com

这样我就可以实现部署的真正自动化。

我查看了Gitlab的文档并花了一些时间在Google上搜索,但我发现的所有参考资料都与使用Gitlab的CI跑步者有关,我不需要用例。

我试图实现的目标是什么?

1 个答案:

答案 0 :(得分:1)

绝对! 当您执行docker login your.docker.registry.com时,会发生什么:

  • 您的计算机尝试登录指定的docker注册表
  • 如果登录成功,则会在$HOME/.docker/config.json
  • 创建一个文件

官方泊坞窗documentation中概述了这一点。

config.json非常容易理解,很容易在shell脚本中回显。成功登录后,您可以查看生成的config.json

基本上这意味着您可以在bash脚本中执行类似的操作:

echo '{"auths":{"registry.gitlab.com":{"auth":"base64encodedcredentials"}}}' > ~/.docker/config.json

一旦机器将此文件放在正确的位置,它就不会在提取图像时提示您输入登录名或密码。

请记住您的用户名和密码以base64编码格式存储在此文件中。如果这让您感到困扰,您可能需要另一套专用凭证。