OS: Ubuntu 18.04 Server
Docker 18.3 CE
我使用PuTTY SSH会话从Windows 10笔记本电脑登录到服务器。
我的本地Windows笔记本电脑上没有Docker,因此所有工作都在远程服务器上完成。
我可以使用终端会话在远程服务器上执行所有Docker命令。
但是,当我尝试将我的图像保存到Docker中心时,当我尝试登录时,使用:
docker login
我收到以下错误消息:
error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`
当我在远程服务器上创建图像时,我没有收到任何错误消息。
我也没有在远程服务器上的相关主目录中看到.docker文件夹。有什么想法吗?
答案 0 :(得分:68)
在ubuntu中安装以下软件包解决了我的问题
sudo apt install gnupg2 pass
答案 1 :(得分:34)
编辑2019-04-07:
由于这是当前选择的答案,我认为人们应该首先尝试以下@Anish Varghese解决方案,因为这似乎是最简单的方法。 您只需要安装gnupg2并通过软件包即可:
sudo apt安装gnupg2 pass
如果它不起作用,那么您可以在这里尝试我的原始解决方案:
我有同样的问题。 bak2trak答案有效,但是它以明文形式保存凭据。如果要将它们保留在密码存储区中,这是解决方案。
1)从https://github.com/docker/docker-credential-helpers/releases下载docker-credential-pass
2)tar -xvf docker-credential-pass.tar.gz
3)mv docker-credential-pass /usr/bin
4)您将需要设置docker-credential-pass(以下步骤基于https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452)
4.1)安装gpg并通过(apt-get install gpg pass
)
4.2)gpg --generate-key
,输入您的信息。您应该会看到类似这样的内容:
pub rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
1234567890ABCDEF1234567890ABCDEF12345678
复制123 ...行
4.3)pass init 1234567890ABCDEF1234567890ABCDEF12345678
(粘贴)
4.4)pass insert docker-credential-helpers/docker-pass-initialized-check
并设置
下一个密码“通行证已初始化”(不带引号)。
4.5)pass show docker-credential-helpers/docker-pass-initialized-check
。您应该会看到通行证已初始化。
4.6)docker-credential-pass list
5)使用以下方式创建〜/ .docker / config.json:
{
"credsStore": "pass"
}
6)泊坞窗登录现在应该可以工作
注意:如果在以后的运行中出现错误“通行证存储未初始化”,请运行以下命令(它将在内存中重新加载通行证存储):
pass show docker-credential-helpers/docker-pass-initialized-check
它将询问您的密码,并将初始化通行证存储。
这是基于以下讨论: https://github.com/moby/moby/issues/25169#issuecomment-431129898
答案 2 :(得分:32)
我在ubuntu 18.08中遇到了同样的问题,这最终对我有用..作为临时解决方案。
我创建了这个文件夹home/.docker/
,因为有些解决方案建议我创建一个文件config.json
并在其中写入默认凭据,即
{
"credsStore": "pass"
}
config.json
。然后将docker-credential-secretservice重命名为其他内容,以便它不会获取此文件。
sudo mv / usr / bin / docker-credential-secretservice / usr / bin / docker-credential-secretservice_x
它有效!
答案 3 :(得分:5)
这可能也有帮助,至少在Ubuntu 20.04中如此:
wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-secretservice-v0.6.3-amd64.tar.gz && tar -xf docker-credential-secretservice-v0.6.3-amd64.tar.gz && chmod +x docker-credential-secretservice && mv docker-credential-secretservice /usr/local/bin/
https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d https://github.com/docker/docker-credential-helpers/releases
答案 4 :(得分:4)
如果apt install gnupg2 pass不适合您,您还可以安装golang-docker-credential-helpers软件包
答案 5 :(得分:1)
对我来说docker push
失败了
denied: requested access to the resource is denied
...所以我想docker login
,但输入凭据后得到以下信息:
Remote error from secret service:
org.freedesktop.DBus.Error.UnknownMethod:
No such interface 'org.freedesktop.Secret.Collection' on object at path
/org/freedesktop/secrets/collection/login
Error saving credentials:
error storing credentials - err: exit status 1, out:
No such interface 'org.freedesktop.Secret.Collection' on object at path
/org/freedesktop/secrets/collection/login
幸运的是,我有一台可用的计算机可以登录而无需对系统进行任何更改。我复制了~/.docker/config.json
...
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "<some-hash-value>"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.09.2 (linux)"
}
}
...转到另一台计算机上,docker push
正常工作。
答案 6 :(得分:1)
对我来说,最简单的解决方案是在用户主目录下的.docker目录下创建config.json文件:
〜/ home / .docker / config.json
然后我从服务器上复制了该文件的内容,并从该服务器登录到Docker集线器。
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "SOMEVALUE"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.06.1-ce (linux)"
}
}
这是一个简单的解决方法,因为它不需要您安装或更新我们在生产服务器上无法轻松完成的任何软件包。
答案 7 :(得分:1)
您已经阅读了解决方案,但是事实是gnupg2现在默认情况下没有在Ubuntu 18+中安装,这就是在ScheduledExecutorService
之后的某个时候,行为有些不同的原因。
答案 8 :(得分:0)
尝试一下:sudo apt install golang-docker-credential-helpers
答案 9 :(得分:0)
通过使用 sudo 运行脚本解决了我的问题!
sudo docker login -u YOU-USERNAME
答案 10 :(得分:0)
我刚刚删除了 ~/.docker/config.json 并再次尝试登录。有用。创建了一个新文件。
答案 11 :(得分:0)
我遇到了这个问题(无头 Ubuntu 20,从 16,18 升级),其他答案都不适合我。最后,在阅读了此处发布的一些讨论后,我发现问题在于 gnome-keyring 已安装但无法正常工作。由于这是一个无头的,正确的答案是删除 gnome-keyring(因为它提供了 org.freedesktop.secrets 服务)然后它就完美地工作了。
sudo apt remove gnome-keyring golang-docker-credential-helpers
答案 12 :(得分:0)
您没有凭据存储。尝试使用 Gnome 钥匙圈;根据您的 linux 安装,它可能已经安装。您也可以使用 GK 将身份验证数据安全地存储在 Chrom{e,ium}(可能还有更多)中。回到 Docker,你需要一个 .docker/config.json 像:
{
"credsStore": "secretservice"
}
然后,确保您已配置 PAM 以解锁密钥环:https://wiki.archlinux.org/index.php/GNOME/Keyring#PAM_method
答案 13 :(得分:0)
简单的解决方案:只需从〜/ .docker / config.json中删除"credsStore": "secretservice"
答案 14 :(得分:0)
创建以下代码可以为我解决该问题:
AWS_CONFIG=$AWS_DIR/config
AWS_CREDENTIALS=$AWS_DIR/credentials
mkdir -p $AWS_DIR
答案 15 :(得分:0)
在回答之后,我遇到了几个问题。
幸运的是,此修复很容易,您只需要安装软件包rng-tools
:https://stackoverflow.com/a/32941065
pass init <key>
上(步骤5.3),出现错误gpg: decryption failed: No secret key
。实际上,此问题是由于秘密密钥仅限于root用户特权。
我更改了用户主目录中.gnupg .password-store
文件夹的所有权。
然后重新加载目录以避免“不安全的所有权”警告:
gpgconf --kill dirmngr
如果您不想执行所有操作,则可以以root / sudo身份运行所有答案命令。
答案 16 :(得分:-1)
就我而言,在向所有用户授予对文件 /var/run/docker.sock 的读写访问权限后,此错误已解决:
sudo chmod 666 /var/run/docker.sock
答案 17 :(得分:-1)
在ubuntu中安装以下软件包
sudo apt install gnupg2 pass
这对我有用。