在互联网和 Stackoverflow 上搜索了此内容,但没有成功
在 Windows 10 上使用 Docker for Desktop 版本 4.12.0,并以 WSL2 作为后端。
在 Windows 命令提示符窗口中,以下内容有效并列出 c:/data 中的文件
docker run --rm -v c:/data:/target alpine ls /target
但是以下方法都不起作用。 /target 目录始终为空!
docker run --rm -v d:/data:/target alpine ls /target
docker run --rm -v "d:/data:/target" alpine ls /target
docker run --rm -v "d:/data":/target alpine ls /target
docker run --rm -v /mnt/d/data:/target alpine ls /target
docker run --rm -v /run/desktop/host/d/data:/target alpine ls /target
docker run --rm -v "/run/desktop/host/d/data:/target" alpine ls /target
但是,在 WSL 2 终端窗口中,以下命令可以工作并列出 /target 目录下的文件!
docker run --rm -v /mnt/d/data:/target alpine ls /target
但我想使用适用于 Windows 的 Docker Desktop 并使用 Windows 命令提示符。最终,我想在 docker-compose.yml 中挂载卷。
根据过去 StackOverflow 的答案,上述一些命令似乎适用于不同的人。不知道是否是因为 Docker for Desktop 版本不同,或者不清楚他们是在 WSL2 终端窗口还是 Windows 命令提示符窗口中进行尝试。
您面临着关于 Docker 卷的 Microsoft 限制:
“我们支持映射整个第二个驱动器号,但目前,不支持 它的一部分。“
您必须安装完整的d驱动器,如
d:
其他选项,例如根 (
d:\
) 或路径 (d:\somefolder
) 不适用于第二个驱动器。
在你的情况下,这意味着做类似的事情:
docker run -it -v d: alpine ls /d/data
如果这会在容器内创建一个空的 d 文件夹,则意味着您遇到了驱动器内的权限问题。
请注意,即使问题评论来自 2016 年,似乎限制仍然存在...