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

树莓派Ubuntu上Docker Compose运行Mosquitto自动生成多余空卷求助

解决Docker Compose启动mosquitto时创建多余空卷的问题

问题根源

你的Compose文件存在两个关键问题:

  • 直接绑定Docker卷在宿主系统的内部存储路径(/var/lib/docker/volumes/...),不符合Docker卷的使用规范,导致Compose无法正确识别卷的归属关系。
  • 卷映射存在路径冲突:同时将mosquitto/config卷的目录映射到容器/etc/mosquitto,又单独把该目录下的mosquitto.conf映射到容器/mosquitto/config/mosquitto.conf,这种重复映射会让Compose误判需要创建额外卷满足挂载需求。

修复步骤

1. 清理现有多余卷

先停止并删除当前容器,再清理自动生成的匿名卷:

docker compose down -v
# 清理残留匿名卷
docker volume prune -f

2. 修改Docker Compose文件

改用Docker命名卷机制,同时修正容器内路径映射(匹配eclipse-mosquitto官方镜像默认路径):

version: "3.7"

services:
  mosquitto:
    image: eclipse-mosquitto
    hostname: mosquitto
    container_name: mosquitto
    restart: always
    ports:
      - "1883:1883"
      - "9001:9001"
    volumes:
      - mosquitto-config:/etc/mosquitto
      - mosquitto-data:/var/lib/mosquitto
      - mosquitto-log:/var/log/mosquitto

volumes:
  mosquitto-config:
  mosquitto-data:
  mosquitto-log:

3. 配置mosquitto.conf

将你的配置文件放入命名卷对应的宿主路径:

# 查看命名卷的宿主挂载路径
docker volume inspect -f '{{.Mountpoint}}' mosquitto-config
# 将本地mosquitto.conf复制到该路径
cp /path/to/your/mosquitto.conf $(docker volume inspect -f '{{.Mountpoint}}' mosquitto-config)/

4. 重新启动容器

docker compose up -d

验证

执行docker volume ls,只会看到你定义的三个命名卷(mosquitto-config、mosquitto-data、mosquitto-log),不会再生成多余空卷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:06:20