是否可以在不使用CI跑步者的情况下登录GitLabs容器注册表



是否可以自动从其CI Runner上下文之外自动登录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 Runner有关,我不需要用用例。

我想实现的目标吗?

绝对!当您进行docker login your.docker.registry.com时,发生的事情是:

  • 您的机器尝试登录指定的Docker注册表
  • 如果登录成功,它将在$HOME/.docker/config.json
  • 上创建一个文件

官方Docker文档中概述了这一点。

config.json在Shell脚本中很容易理解,并且很容易回声。成功登录后,您可以查看生成的config.json

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

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

一旦计算机在正确的位置将此文件放置,它就不应提示您在拉图像时登录或密码。

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

相关内容

最新更新