凭据无法用于“docker login”

31

将我的用户名和密码复制粘贴到Docker Hub网站上可以正常使用。

密码很长,但不包含破坏shell的符号。

将这些凭据复制粘贴到命令行docker login中会导致用户名或密码错误的错误。我尝试过交互式传递凭据(包括复制粘贴和输入)以及通过命令行参数传递凭据,结果都相同:

# INTERACTIVE
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: my@email.com
Password: <REDACTED>
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password

# COMMAND LINE
$ docker login -u my@email.com -p <REDACTED>
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password

2
我认为你的用户名与你的电子邮件不同。 - mustaccio
@mustaccio 是的,我已经尝试过“Docker ID”,但仍然不起作用。 - Rjak
可能是docker版本不匹配导致的问题? - mustaccio
@mustaccio 刚刚安装了早上的这个版本:Docker version 1.12.3, build 6b644ec - Rjak
15个回答

49

@mustaccio是正确的。

Docker Hub网站允许您使用用户名或电子邮件登录,并且该网站不需要区分大小写的用户名。

docker login需要区分大小写的用户名,而且不能使用电子邮件地址。

当我注册时,我选择了驼峰式大小写的用户名,例如:

MyUsername

Docker在实践中会将所有用户名强制转换为小写。当您登录时,您会在网站右上角看到您的正确用户名。在本例中:

myusername

该网站允许您使用MyUsernamemyusername登录。

docker login仅允许myusername


2
尽管在上面的评论中提到过,您能否强调一下 docker login 与电子邮件完全不兼容,会出现相同的错误?这就是我的情况,您的答案让我找对了方向 :) - AdelaN
@AdelaN 完成了!谢谢! - Rjak
3
对我来说,密码是问题所在。在网站上,它没有任何问题,但尝试从命令行登录时却出现了相同的错误。这是因为我使用了一个包含各种字符的强密码...更改为简单密码后问题得到解决。 - Marius Lazar
2
我也有特殊字符,并且遇到了这个问题。我想知道哪些字符是不允许的... !@#$%^&*()?但愿我知道。 - Rand
嗯,在我的情况下,看起来密码特殊字符“感叹号”符号是我遇到问题的原因 - 使用Portus对Active Directory/LDAP进行身份验证时,命令行:docker login {my.portus.server} 不起作用,但通过portus服务器的图形界面登录是正常的... - Rand
只有将用户名改为小写字母才是解决方案。 - Patapoom

13
同样的问题会在您没有注销并且使用电子邮件地址登录时出现。
docker logout
docker login

不要输入电子邮件地址,而是输入用户名


这是正确的答案!如果您在hub.docker.com登录,您将在右上角看到您的用户名。 - apski

5

我使用了一个密码生成器,其中包含特殊字符,我可以通过浏览器登录但无法通过cli登录。我将其更改为仅包含字母和数字,然后它就可以工作了。


1
是的,只需使用包含字母数字字符的密码即可。 - Sagaryal

5

尝试这样做:

  1. sudo chmod 666 /var/run/docker.sock(更改文件权限)
  2. sudo docker login(登录Docker)

3
我用以下方法解决了这个问题。 前往https://hub.docker.com/settings/security,在我的账户中创建一个新的令牌。

登录时使用docker login命令,并输入:

我的用户名(小写)

令牌(代替密码)


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
特别是帮助我不想将我的密码更改为仅包含字母和数字的部分。 - Moayad Ahmad
尝试了,没有帮助! - Amitkumar Karnik

2

如果您正在Windows上使用git bash,则请使用以下命令:

 winpty docker login --username <yourusername>

它会提示输入密码。输入您的密码后,将显示“登录成功”消息。

在登录Docker官方网站时,您可以在右上角找到“yourusername”。但使用电子邮件无法登录。


1
如果您确保用户名和密码正确,仍然遇到此问题,请在“帐户设置>安全>新访问令牌”中生成一个令牌,我曾为此苦苦挣扎了一个小时,但使用令牌可以解决问题。不知道原因。

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

1
对于任何犯了我这个错误的人:运行sudo docker login -u USERNAME。当它要求输入密码时,如果你是在终端上首次以sudo方式运行,第一个密码是sudo密码,请输入你的sudo密码。然后,它会第二次询问密码,在这里输入你的Docker密码。

0
在Windows上: 右键单击系统托盘上的Docker,然后注销。然后登录,但使用您的Docker Hub用户名而不是电子邮件地址。

0

在密码中添加特殊字符,如@,可能会导致通过终端登录到Docker时出现问题,即使我们使用正确的大小写和其他正确的信息。但如果我们在密码中使用特殊字符,则可以通过网站进行登录。

因此,基本上在密码中仅使用字母和数字,不要在Docker登录中使用特殊字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接