Docker登录成功后Docker Compose出现凭证获取错误
Docker Compose 拉取镜像时GPG凭证解密失败问题
在Linux系统中使用Docker守护进程时,出现以下异常:
$ docker --version Docker version 28.0.4, build b8034c0ed7 $ docker compose version Docker Compose version 2.35.0 $ docker login -u <uid> i Info → 可使用个人访问令牌(PAT)替代。 如需创建PAT,请访问https://app.docker.com/settings Password: Login Succeeded $ docker compose up [+] Running 0/3 ⠧ proxy Pulling 3.7s ⠧ app Pulling 3.7s ⠧ solr Pulling error getting credentials - err: exit status 1, out: `exit status 2: gpg: public key decryption failed: No such file or directory gpg: decryption failed: No such file or directory` $ cat ~/.docker/config.json { "auths": { "*********.ecr.us-west-2.amazonaws.com": {}, "https://index.docker.io/v1/": {}, "https://index.docker.io/v1/access-token": {}, "https://index.docker.io/v1/refresh-token": {} }, "credsStore": "pass" } $ docker-credential-pass list {"https://index.docker.io/v1/":"<uid>","https://index.docker.io/v1/access-token":"<uid>","https://index.docker.io/v1/refresh-token":"<uid>"}
当前状态:docker login操作正常,docker pull可以从Docker Hub拉取镜像,但docker compose up时出现上述GPG解密错误,且该问题是近期出现(数月未使用Compose)。
解决方法:
- 检查
pass工具可用性:终端输入pass,若提示密钥相关错误,说明GPG密钥环损坏或密钥丢失。可重新生成GPG密钥,再执行pass init <你的GPG密钥ID>重新初始化pass。 - 临时切换凭证存储方式:编辑
~/.docker/config.json,删除或注释"credsStore": "pass"这一行,然后重新docker login(此时凭证会明文存在config.json中,仅作测试用),再运行docker compose up验证是否正常。 - 检查GPG目录权限:确保
~/.gnupg目录的所有者是当前用户,权限设置为700(执行chmod 700 ~/.gnupg),避免Compose进程无法访问密钥文件。 - 重置Docker凭证助手:删除
~/.docker/config.json中多余的access-token、refresh-token条目,只保留https://index.docker.io/v1/的auth项,然后重新登录,让凭证助手重新生成正确的存储条目。
内容的提问来源于stack exchange,提问作者user3758232
相关产品推荐
相关产品推荐

