Docker Compose绑定卷异常:本地目录未生成且容器内容持久化
问题解答
1. 本地./data目录未生成/未被使用的原因及解决
- 工作目录不匹配:Docker Compose中相对路径(
./data)是基于执行docker-compose命令时的当前工作目录,而非docker-compose.yml文件的所在目录。你在Docker Desktop看到挂载路径是/var/www/test/data,说明大概率是在/var/www/test目录下执行的docker-compose命令,而非配置文件所在目录。 - 权限问题:若当前用户对目标目录无写入权限,Docker自动创建
./data目录会失败(你操作无报错,此可能性较低)。 - 配置缩进错误:需确认
volumes字段直接隶属于nginx服务(缩进层级与ports、image一致),缩进错误会导致挂载配置不生效。
解决方法:
- 切换到
docker-compose.yml所在目录,再执行docker-compose up -d;或在命令中指定配置文件路径,同时用绝对路径定义挂载避免工作目录混淆:
修改docker-compose -f /path/to/your/docker-compose.yml up -dvolumes配置:volumes: - "/absolute/path/to/your/data:/var/www/html" - 手动创建目录并赋予合适权限:
mkdir ./data && chmod 755 ./data
2. 容器内/var/www/html内容异常持久化的原因
你看到的"持久化"并非来自Docker卷,核心原因是:
- 实际挂载了错误的本地目录:结合Docker Desktop的显示,容器绑定的是
/var/www/test/data而非你预期的目录。该目录保存了之前的内容,每次启动容器都会挂载它,导致内容保留。而系统重启后该目录内容消失,大概率是/var/www/test属于临时挂载的文件系统(如tmpfs),重启后自动清空。
解决方法:
- 按照第一个问题的方法修正挂载路径,确保绑定到预期的本地目录;
- 检查
/var/www/test的挂载类型:执行df -h /var/www/test,若为tmpfs则避免将其作为挂载目标。
内容的提问来源于stack exchange,提问作者Jeroen
相关产品推荐
相关产品推荐

