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文件夹。有什么主意吗?
18条答案
按热度按时间qvtsj1bj1#
编辑2019-04-07:
由于这是目前选择的答案,我认为人们应该先尝试下面的@Anish Varghese解决方案,因为它似乎是最简单的。您只需要安装gnupg2和PASS包:
Sudo apt安装gnupg2通行证
如果不起作用,那么你可以在这里尝试我的原始解决方案:
我也有同样的问题。Bak2trak Answer起作用了,但它以明文形式保存凭据。如果您想要将它们保存在密码存储中,以下是解决方案。
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并通过(
apt-get install gpg pass
)5.2)
gpg --generate-key
,输入您的信息。您应该会看到类似这样的内容:复制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已初始化。5.6)
docker-credential-pass list
6)使用以下命令创建~/.docker/config.json:
7)扩展坞登录现在应该可以工作了
注意:如果在以后的运行中出现错误“PASS STORE IS UNINITIZIZED”,请运行以下命令(它将在内存中重新加载PASS存储):
它将询问您的密码,并初始化通行证存储。
这是基于以下讨论:https://github.com/moby/moby/issues/25169#issuecomment-431129898
shstlldc2#
在ubuntu中安装以下程序包解决了我的问题
3j86kqsm3#
我在ubuntu 18.08中遇到了同样的问题,这对我来说终于奏效了。作为一种临时解决方案。
我创建了这个文件夹
home/.docker/
,因为一些解决方案建议我创建一个文件config.json
,并在其中写入默认凭据,即config.json
。Sudo mv/usr/bin/docker-redential-iciservice/usr/bin/docker-redential-askservice_x
而且成功了!
gt0wga4j4#
这也可能有帮助,至少在Ubuntu 20.04中是这样:
https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d和https://github.com/docker/docker-credential-helpers/releases
6tdlim6h5#
如果apt安装gnupg2通行证不适用于您,您还可以安装Golang-docker-redential-helpers包
jbose2ul6#
我刚刚删除了~/.docker/config.json,并再次尝试登录。它起作用了。将创建一个新文件。
jgwigjjp7#
这在我的Ubuntu 18中很管用:
vptzau2j8#
对我来说,最简单的解决方案是在用户主目录内的.docker目录下创建config.json文件:
/home/.docker/config.json
然后,我从服务器上复制了该文件的内容,我可以从该服务器登录到扩展底座中心。
这是一个简单的解决办法,因为它不需要您安装或更新任何包,而我们在生产服务器上无法轻松做到这一点。
sg2wtvxw9#
简单的解决方案:只需从~/.docker/config.json中删除
"credsStore": "secretservice"
vu8f3i0k10#
用sudo运行脚本就解决了我的问题!
lskq00tm11#
对于我来说,
docker push
失败,原因是..。因此,我想要
docker login
,但在输入凭据后得到以下结果:幸运的是,我有另一台机器可用,我可以在不对系统进行任何更改的情况下登录。我复制了
~/.docker/config.json
的内容.....。到另一台机器,
docker push
起作用了。r1zhe5dt12#
我遇到了这个问题(无头Ubuntu 20,从16,18升级而来),其他答案对我都不起作用。最后,在阅读了这里发布的一些讨论后,我发现问题是gnome-keyring已安装,但无法正常工作。由于这是无头的,正确的答案是删除GNOME-KEYRING(因为它提供org.freedesktop.secrets服务),然后它就可以完美地工作了。
zsohkypk13#
你已经阅读了解决方案,但事实是Ubuntu 18+中现在没有默认安装gnupg2,这就是为什么在
apt upgrade
之后的某个时候,事情的表现有点不同。cnh2zyt314#
试试看:
sudo apt install golang-docker-credential-helpers
zzoitvuj15#
根据答案,我有几个问题。
1.密钥生成停留在熵(步骤5.2)。
幸运的是,修复很简单,您只需要安装包
rng-tools
:https://stackoverflow.com/a/329410651.在
pass init <key>
上(步骤5.3)出现错误gpg: decryption failed: No secret key
。事实上,该问题是由于密钥被限制为根权限造成的。
我更改了用户home目录中
.gnupg .password-store
文件夹的所有权。然后重新加载了dimngr以避免“不安全的所有权”警告:
如果您不想执行所有这些操作,则可以以超级用户/sudo身份运行答案的所有命令。