【问题标题】:Docker credentials store on WSL2 without Docker Desktop没有 Docker 桌面的 WSL2 上的 Docker 凭据存储
【发布时间】:2021-11-02 10:35:06
【问题描述】:

为了不使用 Docker 桌面直接在 WSL2 上运行 Docker,我遵循了不同的来源。我执行的步骤与此处描述的步骤非常相似:https://dev.to/felipecrs/simply-run-docker-on-wsl2-3o8。 Docker 可以工作,但我仍然必须配置一个凭证存储,这样 docker 登录才能工作。我尝试了两种方法:

A) 我尝试在https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388974092 之后使用 pass as credential store '泊坞窗登录'....Login Succeeded。身份验证已添加到 .docker/config.json,其中 credsStore 设置为“pass”。但是,docker登录成功后,pull命令仍然失败并出现认证错误:Error response from daemon: unauthorized: unauthorized to access repository:... 似乎令牌不再用于后续命令。

B) 尝试了一种不太理想的方法,我转而将 wincred.exe 配置为 credsStore

~/.docker/config.json

   {
        "credsStore": "wincred.exe"
    }

如底部的奖励部分所示:https://dev.to/felipecrs/simply-run-docker-on-wsl2-3o8:

wincred_version=$(curl -fsSL -o /dev/null -w "%{url_effective}" https://github.com/docker/docker-credential-helpers/releases/latest | xargs basename)
    
sudo curl -fL "https://github.com/docker/docker-credential-helpers/releases/download/${wincred_version}/docker-credential-wincred-${wincred_version}-$(dpkg
    --print-architecture).zip" | zcat | sudo tee /usr/local/bin/docker-credential-wincred.exe >/dev/null
    
sudo chmod +x /usr/local/bin/docker-credential-wincred.exe

这种方法有效,但奇怪的是,每次登录或拉取都需要超过 1 分钟才能成功通过身份验证并开始操作。

我希望有一个类似于 A 的干净的纯 Linux 方法,但也希望能对 B 的剩余问题提供解释/解决方案。

【问题讨论】:

标签: docker wsl-2


【解决方案1】:

由于您使用的是pass,这意味着您需要一个 GPG 密钥来加密 Docker 的凭据存储。

您的 GPG 密钥有密码吗?也许它正在尝试请求它,但它不知道要使用哪个终端。对于加密您的凭据,不需要密码,因为它使用公钥(所以docker login 不会导致任何错误)但对于解密它需要私钥,所以如果它不能询问您的密码。

尝试将 WSL2 中的 GPG_TTY 设置为您当前用于 Docker 拉取的那个:

export GPG_TTY=$(tty)

【讨论】:

  • 太棒了。就是这样。如果我可以加倍投票,我会的。谢谢!
猜你喜欢
  • 2022-01-23
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 2022-06-14
  • 2018-09-22
相关资源
最近更新 更多