【发布时间】:2021-05-14 16:40:00
【问题描述】:
每个人。 我希望有人可以帮助回答我的问题。 我正在加入一个必须使用各种 docker 容器的项目。有人告诉我,我只需要使用 docker-compose 来拉下所有必要的容器。根据我是否使用 sudo,我尝试了这个,并得到了两个不同的错误。我的机器是 Ubuntu 仿生海狸 18.04.4LTS 我已经根据 github 页面上 Bionic 的安装说明安装了 docker-engine,并且 docker-compose 同样根据其说明进行了安装。我没有创建“docker”组,因为我有 sudo 访问权限。
我们有两个存储库,我必须先登录才能做任何事情。为了防止我的密码未加密地存储在 config.json 中,我按照本指南设置了一个安全的凭证存储: https://www.techrepublic.com/article/how-to-setup-secure-credential-storage-for-docker/
但是,登录过程不是要求我提供本文中提到的密码和/或密码短语,而是让我输入存储库的实际密码。因此,安全凭证存储可能无法正常工作,这可能会导致问题。
无论如何,一旦我登录并且两个命令显示登录成功,我就会尝试做一个 码头工人组成拉 在回购。当我做 sudo docker-compose pull 我得到了最后一个错误: docker.errors.DockerException:凭据存储错误:StoreError('凭据存储 docker-credential-pass exited with "exit status 2: gpg: WARNING: unsafe Ownership on homedir '/home/myuser/.gnupg'\ngpg: 解密失败:没有密钥”。') .gnupg 目录的 ls 是 myuser@myhost$ ls -lA ~ | grep gnupg drwx------ 4 myuser myuser 226 Feb 9 13:35 .gnupg
gpg --list-secret-keys 在我以 myuser 身份运行时显示我的密钥对。
我假设正在发生的事情是因为我以 sudo 身份运行,因此尝试访问此目录的用户是 root,而不是 myuser,因此它失败了。但是,如果我不使用 sudo 码头工人组成拉 docker.errors.DockerException: 获取服务器 API 版本时出错: ('Connection aborted.', PermissionError(13, 'Permission denied'))
我猜这是因为我的普通用户无法连接到 docker daemon 的 Unix 套接字。
那么,我该如何让它们一起玩呢?答案是添加一个 docker 组以便该命令仍以 myuser 而不是 root 身份运行吗?还是有其他方法可以做到这一点?
另外,为什么我的凭据存储不要求我输入 docker-credential-pass 或 GPG 密码设置的密码?我怀疑这两个是相关的。也许 pull 正试图再次发送我的身份验证令牌,但因为它无权访问安全凭据存储,所以无法发送。
以上都是猜测。有谁知道这里发生了什么?
提前感谢您, 布拉德
【问题讨论】:
标签: docker-compose gnupg