繁体   English   中英

Docker 凭据存储在 WSL2 上,无需 Docker 桌面

[英]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 'docker login'.... Login Succeeded之后使用pass 作为凭证​​存储 auths 被添加到 .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 密钥是否有密码? 也许它正在尝试请求它,但它不知道要使用哪个终端。 为了加密您的凭据,密码短语不是必需的,因为它使用公钥(因此docker login不会导致任何错误),但对于解密,它需要私钥,因此如果无法解密,它将失败问你密码。

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

export GPG_TTY=$(tty)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM