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