在 Window 和 WSL 之间共享 docker 凭据



环境

Windows 版本和内部版本
  • 2004(操作系统内部版本 19037.1(
  • 码头工人边缘版本 2.1.6.1
  • Ubuntu 18.04 on WSL 2

当前设置和状态:

  • 安装在 Windows 上的 docker
  • 为 docker、
  • docker-compose、docker-credential-desktop 等创建了别名......

运行诸如docker builddocker psdocker pulldocker images等命令都可以正常工作。现在我想推送一个图像,所以我当然必须先登录。

问题:登录到码头工人中心。

  • 我在 WSL 终端中运行docker login
  • 我输入了用户名和密码
  • 我收到以下错误
Error saving credentials: error storing credentials - err: exec: "docker-credential-desktop": executable file not found in %PATH
%, out: ``

到目前为止我尝试过什么

Powershell的docker login工作正常。所以我在/mnt/c/Users/<winusername>/.docker/home/<wslusername>/.docker之间创建了一个象征性的联系。等效的.aws工作正常,但对于.docker它无法共享甚至确认凭据,因此它再次询问用户和密码并抛出与上述相同的错误。

这对我有用,

sudo  ln -s /mnt/c/Program Files/Docker/Docker/resources/bin/docker-credential-desktop.exe /usr/bin/docker-credential-desktop.exe

将可执行文件从 windows 路径链接到 linux 路径,或者您可以在 linux 路径上添加 windows 路径。

参考: https://github.com/docker/for-win/issues/6652

> 更新时间:2021 年 2 月

现在这一切都简单多了。如果您在最新版本的 Windows 上使用 WSL2,只需在 Windows 端安装 docker 并确保配置:

  • 一般:我们基于 WSL 2 的引擎
  • 在资源/WSL 集成中:启用与默认 WSL 发行版的集成

您必须重新启动码头工人。一旦完成,一切都透明地工作。

下面这里可以忽略

事实证明,Docker和WSL之间的集成比我想象的要好。虽然它本可以更好地记录下来。我打算改变策略并尝试在 WSL 中安装 docker。所以我摆脱了所有别名并重新启动了我的会话。你瞧,当我跑docker时,还有东西在跑。

这是因为 docker 的边缘版本创建了适当的符号链接,现在我毫无问题地登录到 docker 中心。

最新更新