基于 WLS2 的 docker desktop 无法将系统中的挂载目录,挂载到容器里

157 天前
 l0ad1ng
cd ~
mkdir test
mount --bind /etc test
docker run -it --rm -v test:/data debian ls /data

这时候容器里的/data 目录是空的,没有/etc 目录中的文件

只要是 mount 上去的目录,不管是本地还是远程的,docker 都挂不进去。挂进去的其实是原始的~/test目录。

有人知道是为什么吗?

1382 次点击
所在节点    Windows
10 条回复
yinmin
157 天前
-v 后面的 test 要用全路径,只用 test 不是路径是 volume
iv8d
157 天前
都用全路径试试,另外你是不是挂载的卷
yinmin
157 天前
docker volume list 能看到一个名为 test 的 volume ,你挂接的是 volume:test
mmdsun
157 天前
你这个 test 是数据卷吧?,WSL2 直接用 Linux 版本 docker 还好用些可以不用 docker desktop
urzz
157 天前
这种跨 wsl 系统的文件访问速度咋样
l0ad1ng
156 天前
绝了,还会自动创建 volume
l0ad1ng
156 天前
@mmdsun 我也试过,WSL2 的 mirrored 网络和 Linux 版的 docker 配合不太好。
在 windows 上无法访问 docker 映射出来的端口,只能在 wsl 里面访问。docker 配置加上 iptables: false windows 可以访问了,但容器之间就无法通信了。
docker desktop 就都正常。
Mageblade
156 天前
可以的,我就在用基于 wsl2 的 docker desktop ,给你发一个我的 docker-compose 配置


version: '3'

name: gogs

services:
gogs:
container_name: gogs
image: gogs/gogs
volumes:
- 'd:/DockerVolumes/gogs:/data'
ports:
- '10880:3000'
- '10022:22'
restart: always
huangcjmail
156 天前
建议看看命名卷和绑定挂载的区别。你应该是想要实现绑定挂载,需要写绝对路径。这种写法 docker 看起来是绑定命名卷,然后自动创建了 test 命名卷。
l0ad1ng
155 天前
@urzz 读写 vhdx 的性能还可以接受

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1058384

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX