我正在使用最新的gitlab和集成的docker注册表 . 对于每个项目,我创建一个单独的部署令牌 . 在我要部署图像的主机上 docker login https://registry.example.com/project1
,输入部署令牌并获得成功 . 拉动图像效果很好 .
在同一主机上,我需要从同一个注册表部署另一个映像 . 所以我做了 docker login https://registry.example.com/project2
,部署令牌(与令牌1不同,因为每个项目都有自己的部署令牌)并获得成功 .
但是看看 .docker/config.json
我可以看到docker只存储域而不是完整的url,因此用新的令牌替换旧的auth令牌 . 所以我现在只能拉出图像2,而不再是图像1 .
这是码头 Worker 的错误吗?如何为同一个注册表使用多个auth / deploy令牌?
3 回答
这不是docker中的错误,也不是gitlab中的错误 . 事实上,gitlab为每个项目创建了一个注册表,使得处理有点麻烦 .
如果这是一个帮助,您可以在登录时在命令行界面上提供令牌 .
请参阅此处的官方文档:https://docs.gitlab.com/ee/user/project/deploy_tokens/#read-container-registry-images
目前,这是不可能的 . 见https://github.com/moby/moby/issues/37569 .
但是,如果它为您服务,一种解决方法是将凭据存储在依赖于CWD的目录中:
这样,通过更改目录,您可以更改凭据 . 你必须
cd
才能使用git和docker-compose .我的compose.yml文件的内容:
有两种方法可以解决 .
login
,但是您必须与CI
一起进行服务更新 .Gitlab文档在这里:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#authenticating-to-the-container-registry