WSL 上的 Docker 不会绑定挂载 $HOME

Seb*_*eth 5 docker windows-subsystem-for-linux

我在 WSL(Linux 的 Windows 子系统,Ubuntu 16.04)上使用 Docker 时遇到了最奇怪的情况。我试图将安装/home/username(或只是$HOME为了方便)绑定为容器中的卷,而不是在容器中查找我的主目录的内容,而是完全获得一些其他卷。

奇怪的是,每当我尝试绑定 mount$HOME/home/username. 如果我是touch一个新文件,它会出现在我安装$HOME到的所有其他容器中。所有其他绑定安装到任何其他目录都可以正常工作。

例如,这些都共享同一个神秘文件夹:

docker run -it --rm -v /home/username:/test alpine sh
docker run -it --rm -v $HOME:/test alpine sh
docker run -it --rm -v $HOME:/test -v $HOME:/test2 alpine sh
Run Code Online (Sandbox Code Playgroud)

当我执行 a 时,docker volume ls没有名为 的卷/home/username,因此排除了意外拥有同名的 docker 托管卷的情况。

我正在安装的这个神秘卷是什么,为什么 docker 没有$HOME正确安装我的目录?

rfa*_*fay 1

我使用了https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawless#ensure-volume-mounts-work中的说明来设置所有内容。

然后我必须显式地export HOME=/c/Users/rfay让 Windows 上的 Docker 守护进程可以访问它。但这确实有效。基本的魔力在于 WSL 中的路径必须是 Docker 守护进程可以在本机 Windows 中转换的内容。