我正在以这种方式安装两个卷:
volumes:
- /home/username/videos:/var/www/symfony/ftp
- .docker/data/uploads/videos:/var/www/symfony/public/uploads/videos
主机上的两个文件夹都在同一个分区上。如果我在主机上为 /home/username/videos
和 .docker/data/uploads/videos
之间的文件运行 mv
,它基本上是即时的.但是,如果我在 var/www/symfony/ftp
和 /var/www/symfony/public/uploads/videos
之间运行 mv
,那会很痛苦慢。
基本上,它似乎正在复制文件,就好像它是两个完全不同的物理驱动器一样。主机运行 Ubuntu 20.04,Docker 镜像 Alpine 3.13。
这种行为是预期的吗?如果可能的话,我知道如何改进它吗? (除了将两个文件夹放在同一卷上)
最佳答案
Linux 在幕后将这些主机挂载实现为两个单独的绑定(bind)挂载到容器的挂载命名空间中。当您运行 mv
时,它会检查是否可以在文件系统相同时进行简单的重命名。不幸的是,当您遇到绑定(bind)安装时 linux treats these as separate filesystems即使绑定(bind)挂载的底层文件系统相同。
关于linux - 在 Docker 中的卷之间移动文件很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67592916/