编辑于2019-04-07:
由于这是当前选择的答案,我认为人们应该首先尝试 @Anish Varghese 在下面提供的解决方案,因为它似乎最简单。 您只需要安装 gnupg2 和 pass 软件包:
sudo apt install gnupg2 pass
如果不起作用,那么您可以尝试我的原始解决方案:
我遇到了同样的问题。 bak2trak 的答案有效,但它会以明文保存凭据。 如果您想将它们保存在密码存储中,请使用以下解决方案。
1)从https://github.com/docker/docker-credential-helpers/releases下载 docker-credential-pass
2)tar -xvf docker-credential-pass.tar.gz
3)chmod u+x docker-credential-pass
4)mv docker-credential-pass /usr/bin
5)您将需要设置 docker-credential-pass(以下步骤基于https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452)
5.1)安装 gpg 和 pass(apt-get install gpg pass
)
5.2)gpg --generate-key
,输入您的信息。 您应该会看到类似于以下内容:
pub rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
1234567890ABCDEF1234567890ABCDEF12345678
复制123...行
5.3) pass init 1234567890ABCDEF1234567890ABCDEF12345678
(粘贴)
5.4) 运行 pass insert docker-credential-helpers/docker-pass-initialized-check
并设置下一个密码 "pass is initialized" (不带引号)。
5.5) 运行 pass show docker-credential-helpers/docker-pass-initialized-check
。您应该看到“pass is initialized”。
5.6) docker-credential-pass list
6) 创建一个 ~/.docker/config.json 文件,其中包含:
{
"credsStore": "pass"
}
7) docker登录现在应该可以使用了
注意:如果您在未来的运行中遇到“pass store未初始化”错误,请运行以下命令(它将重新加载内存中的pass store):
pass show docker-credential-helpers/docker-pass-initialized-check
它将要求您输入密码并初始化通行证存储。
这是基于以下讨论:
https://github.com/moby/moby/issues/25169#issuecomment-431129898
docker login
命令时遇到了一个类似的问题。我通过将主机上的.docker/config.json
复制到手动创建的LXD/LXC容器内的$HOME/.docker/
目录中来解决它。目前,我正在尝试解决另一个问题,并想问一下您是否已经尝试过这样做? - code_dredd