You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

挂载卷至/var/www/html路径不存在,Docker Compose配置求助

问题分析与解决方案

嘿,我来帮你拆解这个问题——你其实是搞混了Docker里命名卷和绑定挂载的核心区别啦!

为什么主机/var下找不到www文件夹?

你在docker-compose.yml里定义的exercise1是一个Docker命名卷,这种卷是由Docker引擎统一管理的,它的实际存储位置并不在你主机的/var/www/html路径下,而是Docker自己的专属存储目录里(Linux系统一般是/var/lib/docker/volumes/exercise1/_data)。

简单说:命名卷和主机的文件系统结构没有直接关联,所以你在主机的/var目录下自然找不到对应的www文件夹,这完全是正常现象!

两种解决思路,看你需求选:

1. 继续使用命名卷(适合管理容器数据,不直接在主机修改)

如果你的需求是让Docker帮你管理这个卷的数据,那不用改配置,只是查看数据的方式要变:

  • 直接进入容器查看内容:
    docker-compose exec exercise1 ls /var/www/html
    
  • 或者找到命名卷在主机的实际路径查看:
    先执行docker inspect exercise1,在输出里找到Mounts字段下的Source值,那就是这个卷在主机的真实存储路径,直接去那里看文件就行。

2. 改用绑定挂载(需要主机目录和容器目录同步)

如果你想把主机的某个本地目录挂载到容器的/var/www/html,那就要修改volumes的写法,把命名卷换成主机的路径:
比如先在主机当前目录创建一个html-files文件夹,然后修改docker-compose.yml:

version: '3'
services:
  exercise1:
    image: tutum/apache-php
    ports:
      - '80:80'
    volumes:
      - ./html-files:/var/www/html  # 相对路径写法,也可以用绝对路径比如/home/yourname/html:/var/www/html
# 这里可以删掉volumes: exercise1的定义,因为不需要命名卷了

这样启动后,主机的html-files目录就会和容器的/var/www/html同步,你在主机这个目录里放的文件,容器里就能看到啦。

验证小技巧

不管用哪种方式,启动容器后都可以用这条命令确认容器里的/var/www/html路径是否正常挂载:

docker-compose exec exercise1 df -h /var/www/html

输出里会显示挂载的来源,帮你确认挂载是否生效。

内容的提问来源于stack exchange,提问作者adsds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:46:24