是否可以自动从其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编码格式存储在此文件中。如果这困扰您,您可能需要另一组专用凭据。