在使用Docker的Compose功能时,遇到了一个问题:当使用绑定挂载将主机上的文件夹挂载到Docker容器中时,在使用
docker-compose
命令运行的容器内,挂载的文件夹内容为空,但在直接使用
docker run
命令运行的容器内,挂载的文件夹内容正常显示。用户想知道如何解决这个问题,确保主机上正确挂载的文件夹内容能够在Compose中的容器内正常显示。
请注意以下操作可能会涉及版本差异,请谨慎操作并提前备份数据。
方案1 – 调整挂载的传播属性
在使用Docker的Compose功能时,与直接使用
docker run
命令相比,可能存在一些默认设置上的差异,尤其是在绑定挂载的传播属性方面。你可以尝试通过在Compose文件中设置传播属性来解决这个问题。
docker-compose.yml
文件。
env
服务)的
volumes
配置中,使用
rslave
传播属性来确保挂载的内容能够在容器内正常显示。如果使用
shared
属性可能也会有类似效果。
下面是示例的
docker-compose.yml
片段:
version: "3.3" services: image: debian:latest volumes: - "/home/quant:/root/host:rslave"
在上面的示例中,我们使用
rslave
传播属性确保主机上的挂载在容器内正常显示。请根据你的实际需求进行适当的配置调整。方案2 – 使用
docker run
命令如果你发现在使用
docker-compose
命令时存在问题,而在使用docker run
命令时一切正常,你也可以考虑继续使用docker run
命令来启动容器。打开终端窗口。 使用类似于以下命令来手动运行容器,并确保主机上的绑定挂载正常工作: docker run -v /home/quant/:/root/host debian:latest bash -c 'ls -al /root/host/code'这将创建一个新的容器,手动指定绑定挂载并运行命令,确保挂载的文件夹内容正确显示在容器内。