技术, Docker

Docker 同一域名下多个 Registry 保存凭证的方式

2019年12月01日,天气小雨

阿里云的容器镜像服务是个好东西,配合在阿里云上容器服务,速度非常快。

但是阿里云的容器服务不支持自定义域名,都是在同一个域名下,通过不同的 namespace 来实现的。当需要管理多个账户下的不同 namespace 的时候,Docker 默认的认证存储方式就不太适用了。默认的 ~/.docker/config.json 中的 auths 是根据域名来区分的,会出现登录了这个 namespace 之后,另一个 namespace 认证会失效的情况。经过一番搜索,发现可以通过 docker --config 来实现。

通过如下方式来创建一个名为 config-a 的配置

docker --config ~/.docker/config-a login --username=config-a-username registry.cn-hangzhou.aliyuncs.com

之后 push 之类的命令,在前面加个 --config ~/.docker/config-a 即可,例如:

docker build -t registry.cn-hangzhou.aliyuncs.com/xxx/hblb-web:$npm_package_version -t registry.cn-hangzhou.aliyuncs.com/xxx/hblb-web:latest . && docker --config ~/.docker/config-a push registry.cn-hangzhou.aliyuncs.com/xxx/hblb-web:$npm_package_version && docker --config ~/.docker/config-a push registry.cn-hangzhou.aliyuncs.com/xxx/hblb-web:latest

同理,可以增加其他的 config 来完成同一域名下多个账号的认证存储。

您已成功订阅 HADB.ME
真棒!下一步,完成结账以便解锁 HADB.ME
欢迎回来!您已登录成功。
登录失败,请重试。
操作成功!您的账户已全面激活,现在您有所有内容的权限了。
错误!Stripe 结账失败。
成功!您的账单信息已更新。
错误!账单信息更新失败。