Docker Compose启动后命名卷未在/var/lib/docker/volumes生成求助
问题原因
- 执行
docker-compose up命令默认仅加载当前工作目录下的docker-compose.yml文件,你从根目录启动时,仅根目录的配置文件生效,test11文件夹内的docker-compose.yml完全没有被加载,其中定义的命名卷、网络、端口映射等配置都不会生效。 - 根目录的配置文件中,test11服务没有配置任何
volumes挂载规则,容器内/opt/test11/logs目录的写入内容只会存储在容器的临时可写层,不会生成独立的Docker命名卷,自然不会在/var/lib/docker/volumes路径下生成对应目录,数据也会随容器销毁而丢失。 - 你此前修改bind挂载不生效也是同理,挂载配置没有写到实际生效的根目录compose文件中。
解决方法
方案1:直接使用test11目录下的配置启动
进入test11文件夹后执行docker-compose up --build即可,该配置中的所有规则都会生效,启动后可通过docker volume ls命令查看到生成的test11命名卷。
注意:你提供的test11目录下配置文件中
driver:local缺少空格,需要修改为driver: local否则会触发配置语法错误。
方案2:合并配置到根目录的compose文件
如果你需要从根目录统一管理所有服务,将test11的相关配置合并到根目录的docker-compose.yml即可,修改后的配置示例如下:
version: '2.3' networks: citrixhoneypot_local: services: # test11 service test11: build: test11/. container_name: test11 restart: always networks: - citrixhoneypot_local ports: - "443:443" image: "test11:2006" volumes: - test11:/opt/test11/logs volumes: test11: driver: local
修改完成后在根目录执行docker-compose up --build即可正常生成命名卷,容器内日志目录的写入内容会同步到宿主机卷路径下。
内容的提问来源于stack exchange,提问作者alone
相关产品推荐
相关产品推荐

