无法登录Docker帐户

Eas*_*per 61 docker

OS: Ubuntu 18.04 Server
Docker 18.3 CE
Run Code Online (Sandbox Code Playgroud)

我使用PuTTY SSH会话从Windows 10笔记本电脑登录服务器.

我的本地Windows笔记本电脑上没有Docker,因此所有工作都在远程服务器上完成.

我可以使用终端会话在远程服务器上执行所有Docker命令.

但是,当我尝试将我的图像保存到Docker中心时,当我尝试登录时,使用:

docker login
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

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`
Run Code Online (Sandbox Code Playgroud)

当我在远程服务器上创建我的图像时,我没有收到任何错误消息.

我也没有在远程服务器上的相关主目录中看到.docker文件夹.有任何想法吗?

Ani*_*ese 120

在ubuntu中安装以下软件包修复了我的问题

sudo apt install gnupg2 pass

  • 问题的根源是什么?为什么“gnupg2 pass”将如何解决这个问题? (9认同)
  • 也为我在ubuntu 18.04上工作。我只发布了“ sudo apt install pass”,其余的依赖于它 (6认同)
  • 对我不起作用,但安装 gpg 也有效:“sudo apt install gnupg2 pass gpg” (4认同)
  • 在 Unbuntu 18.04 上为我工作。 (4认同)
  • sudo apt install pass对我有用 (2认同)
  • 也在 ubuntu 19.04 为我工作 (2认同)

Jea*_*oin 91

我遇到过同样的问题.目前的答案有效,但它以明文形式保存了凭据.如果您想将它们保存在密码存储区中,这就是解决方案.

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)您需要设置docker-credential-pass(以下步骤基于https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452)

4.1)安装gpg和pass(mv docker-credential-pass /usr/bin)

4.2)apt-get install gpg pass,输入您的信息.你应该看到这样的东西:

pub   rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
      1234567890ABCDEF1234567890ABCDEF12345678
Run Code Online (Sandbox Code Playgroud)

复制123 ...行

4.3)gpg --generate-key(粘贴)

4.4)pass init 1234567890ABCDEF1234567890ABCDEF12345678并设置下一个密码"pass is initialized"(不带引号).

4.5)pass insert docker-credential-helpers/docker-pass-initialized-check.您应该看到pass已初始化.

4.6) pass show docker-credential-helpers/docker-pass-initialized-check

5)创建一个〜/ .docker/config.json:

{
"credsStore": "pass"
}
Run Code Online (Sandbox Code Playgroud)

6)docker login现在应该可以工作了

注意:如果在将来的运行中收到错误"pass store isinitialized",请运行以下命令(它将在内存中重新加载pass store):

pass show docker-credential-helpers/docker-pass-initialized-check
Run Code Online (Sandbox Code Playgroud)

它会询问您的密码,并会初始化密码存储区.

这是基于这个讨论:https: //github.com/moby/moby/issues/25169#issuecomment-431129898

  • @Jean-Phillipe Jodoin,谢谢。似乎我必须定期调用它,否则登录调用无法找到凭据。我读到这可能与 gpg 缓存过期有关,并且“pass show”将其唤醒。当服务器重新启动时,我必须在一切正常之前回到“pass insert”步骤。这不是很方便,但它允许我继续。 (2认同)
  • 检查下面 Anish Varghese 的答案,这似乎是最简单、最干净的解决方案。 (2认同)

bak*_*rak 35

我在ubuntu 18.08中遇到了同样的问题,这最终对我有用..作为临时解决方案.

我创建了这个文件夹,home/.docker/因为有些解决方案建议我创建一个文件config.json并在其中写入默认凭据,即

{
    "credsStore": "pass"
}
Run Code Online (Sandbox Code Playgroud)
  • 我删除了这个文件config.json.
  • 然后将docker-credential-secretservice重命名为其他内容,以便它不会获取此文件.

    sudo mv/usr/bin/docker-credential-secretservice/usr/bin/docker-credential-secretservice_x

它工作了!

  • @Renrhaf 首先 [docker](https://docs.docker.com/engine/reference/commandline/login/#credentials-store) 默认查找“pass”,它在 gnome key-chain 和 osx-keychain 中搜索操作系统-X。如果未找到,则查找“org.freedesktop.secrets”。在 ubuntu 18 上找不到它(一些问题)。将它(docker-credential-secretservice)重命名为其他名称后,它会回退以自行创建配置文件,您可以在 home/.docker 文件夹中查看一个 config.json 文件将被创建。 (2认同)
  • 对于遇到同样问题的任何人:不要忘记 **删除 config.json** 。我几乎放弃了这个,但在我删除 config.json 后的最后一刻,它起作用了。 (2认同)
  • 对我来说,我卸载了`docker-compose`,然后运行你的`sudo mv/usr/bin/docker-credential-secretservice/usr/bin/docker-credential-secretservice_x`重命名,它有效.有谁知道`docker-credential-secretservice`用于什么? (2认同)

小智 21

这在我的 Ubuntu 18 中对我有用:

docker logout
mv ~/.docker/config.json ~/.docker/config_old.json
docker login
Run Code Online (Sandbox Code Playgroud)

  • 在 ubuntu 22.04 中工作 (2认同)

小智 11

我刚刚删除了 ~/.docker/config.json 并再次尝试登录。有用。创建一个新文件。


Vla*_*lax 8

这也可能有帮助,至少在 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/
Run Code Online (Sandbox Code Playgroud)

https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d   https://github.com/docker/docker-credential-helpers/releases


小智 7

我遇到了这个问题(无头 Ubuntu 20,从 16,18 升级),其他答案都不适合我。最后,在阅读了此处发布的一些讨论后,我发现问题是gnome-keyring已安装但无法正常工作。由于这是无头的,所以正确的答案是删除 gnome-keyring (因为它提供了org.freedesktop.secrets服务),然后它就完美地工作了。

sudo apt remove gnome-keyring golang-docker-credential-helpers
Run Code Online (Sandbox Code Playgroud)


Jua*_*nra 6

如果 apt install gnupg2 pass 对你不起作用,你也可以安装 golang-docker-credential-helpers 包


Mr *_*yap 5

对我来说,最简单的解决方案是在用户主目录中的 .docker 目录下创建 config.json 文件:

/home/.docker/config.json

然后我从我能够登录到 docker hub 的服务器复制了这个文件的内容。

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "SOMEVALUE"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.06.1-ce (linux)"
        }

}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的解决方法,因为它不需要您安装或更新我们在生产服务器上无法轻松完成的任何包。


MxW*_*ild 5

简单的解决方案:只需"credsStore": "secretservice"从 ~/.docker/config.json 中删除

  • 这是一个危险的解决方案,因为通过这种方式,密码是未加密存储的 (2认同)

小智 5

我的问题是通过使用 sudo 运行脚本解决的!

sudo docker login -u YOU-USERNAME
Run Code Online (Sandbox Code Playgroud)