最近,我们遇到了一个Docker私有镜像拉取的错误,用了几小时研究Docker私有仓库(Registry)凭证存储的细节才弄清楚。尽管最终修复起来很容易,但在凭据存储设计的过程中了解了一两件事,以及如何对Docker私有仓库(Registry)凭证进行安全配置。
Docker私有镜像拉取失败的情况如下:
Blimp有时需要从Docker私有仓库(Registry)中拉取私有镜像。这通常可以正常工作,但是不幸的是,有时拉取私有镜像时,会收到以下错误消息:
Get https://1234.dkr.ecr.us-east-1.amazonaws.com/v2/blimp/blimp/manifests/v0.1: no basic auth credentials
要了解我们是如何解决的,首先你需要了解Docker凭证。
Docker的外部证书存储
一般建议,存储Docker凭证要放在外部凭证存储中。通常位于~/.docker/config.json的Docker配置文件中。
企业中使用私有镜像仓库,通常都需要开启认证,认证凭据可能是用户在企业中通用的账户。但docker login以后,会在~/.docker/config.json中保存base64以后的用户名、密码,这样,在一些多人使用的服务器上,就会出现账号泄露的问题。
有没有解决方法呢?
docker提供credentials store,也就是讲密码存储到外置的credentials store中。
目前支持如下几种:
D-Bus Secret Service: https://github.com/docker/docker-credential-helpers/releasesApple macOS keychain: https://github.com/docker/docker-credential-helpers/releasesMicrosoft Windows Credential Manager: https://