使用docker-compose时无法查看docker volume内存储数据的问题咨询
问题原因
存在两个核心配置错误:
- 挂载路径不匹配:你的代码向容器内
/usr/src/app/logs目录写入文件,但docker-compose中配置的挂载目标是容器内的/logs目录,二者为完全独立的路径,写入的文件只会存在容器的可写层,不会同步到挂载卷中。 - 命名卷未被正确引用:你当前写的
- /logs:/logs/:rw属于绑定挂载,作用是将宿主机根目录下的/logs文件夹映射到容器内,和你顶层声明的名为logs的命名卷没有关联,因此文件不会出现在/var/lib/docker/volumes路径下,此时写入的文件实际存放在宿主机的/logs目录中。
修复方案
修改docker-compose.yml中my-service服务的volumes配置:
# 替换原有volumes配置 volumes: - logs:/usr/src/app/logs:rw
修改说明:
- 冒号左侧写
logs,代表引用你顶层声明的命名卷,Docker会自动将该卷的存储路径指向/var/lib/docker/volumes/logs/_data - 冒号中间的路径改为代码实际写入的容器内路径
/usr/src/app/logs,确保写入操作可以同步到挂载卷中 - 你已在Dockerfile中完成了目标目录的权限配置,服务运行用户也为appuser,无需额外调整权限即可正常写入。
修改完成后执行以下命令重启服务即可生效:docker-compose up -d --build
验证方法
服务启动完成后,进入宿主机/var/lib/docker/volumes/logs/_data路径,即可查看到容器内生成的helloworld.txt文件。
内容的提问来源于stack exchange,提问作者user96931
相关产品推荐
相关产品推荐

