我正在使用最新的gitlab和集成的docker注册表。对于每个项目,我创建一个单独的部署令牌。在要部署映像的主机上docker login https://registry.example.com/project1,输入部署令牌并获得成功。拉图像效果很好。
在同一主机上,我需要从同一注册表中部署另一个映像。因此,我执行docker login https://registry.example.com/project2了部署令牌(与令牌1不同,因为每个项目都有自己的部署令牌)并获得成功。
但是,在中,.docker/config.json我可以看到docker仅存储域而不是完整URL,因此将旧的auth令牌替换为新的auth令牌。因此,我现在只能拉取图像2,而不再拉取图像1。
这是Docker中的错误吗?如何为同一个注册表使用多个身份验证/部署令牌?
小智 11
您可以使用Docker客户端的--config选项将多个凭证存储到不同的路径中:
docker --config ~/.project1 login registry.example.com -u <username> -p <deploy_token>
docker --config ~/.project2 login registry.example.com -u <username> -p <deploy_token>
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过选择证书来调用Docker命令:
docker --config ~/.project1 pull registry.example.com/project1
docker --config ~/.project2 pull registry.example.com/project2
Run Code Online (Sandbox Code Playgroud)
希望能有所帮助。
Yaj*_*ajo 10
目前是不可能的。参见https://github.com/moby/moby/issues/37569。
但是,如果它为您服务,一种解决方法是将凭据存储在依赖于 CWD 的目录中:
export DOCKER_CONFIG=.docker
cd your-docker-project
docker login registry.example.com
docker-compose pull
cd ../other project
# repeat steps here
Run Code Online (Sandbox Code Playgroud)
这样,通过更改目录,您可以更改凭据。cd无论如何,您必须使用 git 和 docker-compose。
我遇到了同样的问题,我现在的解决方法是使用专用用户/令牌:
ReporterPersonal Access Token的范围read_registry您现在可以使用新创建的令牌登录并拉取:
docker login https://registry.example.com -u REPORTER_USER -p PERSONAL_ACCESS_TOKEN
这应该可以解决问题,您也可以使用现有用户创建令牌
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |