如何修改Mosquitto Docker容器内的mosquitto.conf配置文件
可以修改该mosquitto.conf文件,以下是具体操作方案,按优先级排序:
方案1:容器内root用户直接修改
你当前在容器内的提示符为#,说明已经是root身份,不需要切换到nobody用户操作,直接执行命令即可追加内容:
echo '#test' >> /mosquitto/config/mosquitto.conf
如果执行后仍然提示权限拒绝,说明该配置目录是只读挂载到容器内的,切换到方案2操作。
方案2:宿主机挂载目录修改
如果容器内root也无法修改,说明配置文件是从宿主机挂载进容器的,按以下步骤操作:
- 执行命令查询配置文件的宿主机挂载路径:
# 替换<>内的内容为你的mosquitto容器ID或容器名称 docker inspect <mosquitto容器ID/名称> | grep -A 10 "Mounts"
在输出中找到Destination值为/mosquitto/config对应的Source字段值,即为宿主机上的配置目录路径。
2. 直接在宿主机修改对应配置文件:
# 替换<>内的内容为上一步查询到的Source路径 echo '#test' >> <宿主机配置目录路径>/mosquitto.conf
- 重启容器让配置生效:
docker restart <mosquitto容器ID/名称>
方案3:docker cp覆盖修改
如果无法操作宿主机挂载目录,可通过文件拷贝的方式修改:
- 把容器内的现有配置文件拷贝到宿主机本地:
docker cp <mosquitto容器ID/名称>:/mosquitto/config/mosquitto.conf ./mosquitto.conf
- 编辑本地的mosquitto.conf文件,添加你需要的内容
- 把修改后的文件拷贝回容器覆盖原文件:
docker cp ./mosquitto.conf <mosquitto容器ID/名称>:/mosquitto/config/mosquitto.conf
- 重启容器生效。
之前操作失败的原因
- nobody用户默认是nologin类型用户,不允许直接登录执行命令
- 切换nobody用户时指定的shell路径错误,即使路径正确,当前执行su的工作目录也没有开放nobody用户的写入权限,因此会提示Permission denied
内容的提问来源于stack exchange,提问作者user2150279
相关产品推荐
相关产品推荐

