Docker 凭据存储在没有 Docker 桌面的 WSL2 上
Docker credentials store on WSL2 without Docker Desktop
在不使用 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 作为凭据存储
'docker login'.. 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-only 方法,但也非常感谢 B 的剩余问题的解释/解决方案。
由于您使用的是 pass
,这意味着您需要 GPG 密钥来加密 Docker.
的凭据存储
您的 GPG 密钥有密码吗?也许它正在尝试请求它,但它不知道要使用哪个终端。加密您的凭据不需要密码,因为它使用 public-key(所以 docker login
不会导致任何错误)但是对于解密它需要私钥,所以它会失败如果它无法要求您提供密码。
尝试将 WSL2 中的 GPG_TTY
设置为您当前用于 Docker 拉取的那个:
export GPG_TTY=$(tty)
在不使用 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 作为凭据存储
'docker login'.. 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-only 方法,但也非常感谢 B 的剩余问题的解释/解决方案。
由于您使用的是 pass
,这意味着您需要 GPG 密钥来加密 Docker.
您的 GPG 密钥有密码吗?也许它正在尝试请求它,但它不知道要使用哪个终端。加密您的凭据不需要密码,因为它使用 public-key(所以 docker login
不会导致任何错误)但是对于解密它需要私钥,所以它会失败如果它无法要求您提供密码。
尝试将 WSL2 中的 GPG_TTY
设置为您当前用于 Docker 拉取的那个:
export GPG_TTY=$(tty)