You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 18.04 Server下Docker 18.3 CE登录Docker Hub失败求助

解决Docker Login时的凭据获取错误(Ubuntu 18.04 Server)

我之前帮不少开发者处理过这个问题——在无GUI的Ubuntu服务器上,Docker默认会尝试调用桌面环境的凭据管理器(比如gnome-keyring)来存储登录信息,但服务器没有图形界面支撑这类工具,就会抛出你遇到的这种GDBus相关错误。下面是几种实用的解决办法:

方法1:用--password-stdin跳过凭据存储(临时快速方案)

适合单次登录或者不想折腾持久化配置的场景,能直接绕开凭据存储的问题:

  • 如果你不想明文输入密码,可以用交互式方式:
    docker login --username 你的Docker Hub用户名 --password-stdin
    
    执行后在终端输入密码(输入时不会显示),按回车即可完成登录。
  • 也可以用echo传递密码(注意密码不要泄露给他人):
    echo "你的Docker Hub密码" | docker login --username 你的Docker Hub用户名 --password-stdin
    

方法2:配置Docker用文件存储凭据(持久化简单方案)

让Docker把登录凭据存在本地文件里,替代系统密钥环:

  1. 先创建Docker配置目录(如果不存在的话):
    mkdir -p ~/.docker
    
  2. 编辑Docker配置文件:
    nano ~/.docker/config.json
    
  3. 添加或修改credsStore字段为file
    {
      "credsStore": "file"
    }
    
    保存退出后,再执行docker login,凭据就会正常存在~/.docker/config.json里,下次操作无需重复登录。

方法3:用pass作为安全凭据存储(持久化进阶方案)

如果想要更安全的凭据存储方式,pass是Docker支持的无GUI凭据管理器:

  1. 安装pass和依赖:
    sudo apt update && sudo apt install pass -y
    
  2. 初始化pass:如果没有GPG密钥,先执行gpg --gen-key按提示创建一个;然后用你的GPG密钥ID或邮箱初始化:
    pass init 你的GPG密钥ID/绑定邮箱
    
  3. 修改Docker配置文件~/.docker/config.json,将credsStore设置为pass
    {
      "credsStore": "pass"
    }
    
  4. 现在执行docker login,凭据就会通过pass安全存储,后续操作也能自动读取。

小提示:如果之前尝试过其他凭据存储方式,建议先备份~/.docker/config.json,再清理旧的凭据相关条目,避免冲突。

内容的提问来源于stack exchange,提问作者EastsideDev

火山引擎 最新活动