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