cd ~
mkdir test
mount --bind /etc test
docker run -it --rm -v test:/data debian ls /data
这时候容器里的/data 目录是空的,没有/etc 目录中的文件
只要是 mount 上去的目录,不管是本地还是远程的,docker 都挂不进去。挂进去的其实是原始的~/test
目录。
有人知道是为什么吗?
1
yinmin 51 天前 via iPhone
-v 后面的 test 要用全路径,只用 test 不是路径是 volume
|
![]() |
2
iv8d 51 天前
都用全路径试试,另外你是不是挂载的卷
|
3
yinmin 51 天前 via iPhone
docker volume list 能看到一个名为 test 的 volume ,你挂接的是 volume:test
|
![]() |
4
mmdsun 51 天前 via iPhone
你这个 test 是数据卷吧?,WSL2 直接用 Linux 版本 docker 还好用些可以不用 docker desktop
|
![]() |
5
urzz 51 天前
这种跨 wsl 系统的文件访问速度咋样
|
6
l0ad1ng OP 绝了,还会自动创建 volume
|
7
l0ad1ng OP @mmdsun 我也试过,WSL2 的 mirrored 网络和 Linux 版的 docker 配合不太好。
在 windows 上无法访问 docker 映射出来的端口,只能在 wsl 里面访问。docker 配置加上 iptables: false windows 可以访问了,但容器之间就无法通信了。 docker desktop 就都正常。 |
8
Mageblade 50 天前
可以的,我就在用基于 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 |
9
huangcjmail 50 天前
建议看看命名卷和绑定挂载的区别。你应该是想要实现绑定挂载,需要写绝对路径。这种写法 docker 看起来是绑定命名卷,然后自动创建了 test 命名卷。
|