当 Docker 桌面在 WSL2 中运行时,bash 中的长工作目录

Posted

技术标签:

【中文标题】当 Docker 桌面在 WSL2 中运行时,bash 中的长工作目录【英文标题】:Long working directory in bash when Docker desktop is running in WSL2 【发布时间】:2020-10-05 07:47:39 【问题描述】:

我有使用 WSL 2 后端运行的 Docker 桌面。我还安装了 Ubuntu 20.04 作为我的默认 WSL2 Linux 发行版。 我面临的问题是,如果我在 Docker 运行时启动 C:\Windows\System32\wsl.exe,那么 shell 会使用很长的目录路径进行初始化: /mnt/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1/mnt/c/Windows/System32

但是,如果我关闭 docker 并再次启动 WSL shell,它会从预期的路径开始:/mnt/c/Windows/System32

我可以自己 cd 进入 /mnt/c,但令人讨厌的是它没有从正确的路径开始。 我也尝试运行wsl -d "Ubuntu-20.04 无济于事。 看来我的 C 卷同时安装在 /mnt/c 和上面那条又长又丑的路径上。

有没有人遇到并解决过这个问题?

Docker 版本:2.3.0.3 (45519)

【问题讨论】:

github.com/docker/for-win/issues/7431 我遇到了同样的问题。 Docker 桌面版本 3.1.0 (51484)。尝试关闭 docker 和 wsl。然后重新启动wsl,一切正常。但是一旦我重新启动docker,长路径又出现了。 github.com/microsoft/WSL/issues/6464 【参考方案1】:

如果我先启动 Docker 桌面然后启动 WSL,似乎可以正常工作。

【讨论】:

【参考方案2】:

我已通过在 Windows 的设置 > 资源 > WSL 集成中禁用 Docker 设置中的 WSL 集成选项来解决此问题

【讨论】:

如果您将 Docker 与 WSL2 一起使用,这不是一个有效的解决方案。

以上是关于当 Docker 桌面在 WSL2 中运行时,bash 中的长工作目录的主要内容,如果未能解决你的问题,请参考以下文章

当图像在 docker 机器中运行时,X11 转发不起作用,但如果图像在没有 docker 机器的情况下运行,则它可以正常工作

在 docker 容器中运行时找不到 curl 命令

当应用程序在本地运行时,Node.js 能够连接到 MySQL 容器,但当应用程序在容器中运行时无法连接

在 Docker 中运行时,`npm install` 导致`cb() never called!`

hostconfig.json 在哪里(Docker 桌面 + WSL2 环境)

在 docker 中运行时出现异常:org.postgresql.util.PSQLException:致命:用户“hamzabelmellouki”的密码验证失败