Docker容器持续重启无法进入,因配置文件存在重复pid_file值
解决Mosquitto容器因重复pid_file配置无法启动的问题
因为容器处于持续重启状态,无法直接用docker exec进入,你可以通过以下几种方式修复配置:
方法1:如果配置是绑定挂载到宿主机目录
- 先查看容器挂载信息,确认配置文件的宿主机路径:
找到Type为docker inspect mosquitto | grep -A10 "Mounts"bind的条目,对应的Source就是宿主机上的配置目录。 - 直接在宿主机上找到对应的配置文件:
/etc/mosquitto/conf.d/mosquitto.conf(对应宿主机路径下的conf.d子目录)/etc/mosquitto/mosquitto.conf(对应宿主机路径下的主配置文件)
- 打开这两个文件,删除其中一个文件里的
pid_file配置行(比如删掉conf.d下文件的第7行),保存修改。 - 重启容器:
docker restart mosquitto
方法2:如果配置存储在Docker Volume中
方式A:用临时容器挂载Volume修改
- 找到容器使用的Volume名称:
找到Type为docker inspect mosquitto | grep -A5 "Name"volume的条目,对应的Name就是Volume名称。 - 启动临时Alpine容器挂载该Volume:
docker run -it --rm -v <你的Volume名称>:/mosquitto-conf alpine sh - 在临时容器中修改配置文件:
如果没装编辑器,先安装nano:
然后编辑文件删除重复的apk add nanopid_file行:nano /mosquitto-conf/conf.d/mosquitto.conf # 或者编辑主配置文件 nano /mosquitto-conf/mosquitto.conf - 退出临时容器,重启原Mosquitto容器:
docker restart mosquitto
方式B:拷贝配置文件到宿主机修改后再放回
- 先停止容器(避免重启干扰拷贝):
docker stop mosquitto - 把容器内的两个配置文件拷贝到宿主机当前目录:
docker cp mosquitto:/etc/mosquitto/conf.d/mosquitto.conf ./conf-d-mosquitto.conf docker cp mosquitto:/etc/mosquitto/mosquitto.conf ./main-mosquitto.conf - 在宿主机上编辑这两个文件,删除其中一个的
pid_file配置行。 - 把修改后的文件拷贝回容器:
docker cp ./conf-d-mosquitto.conf mosquitto:/etc/mosquitto/conf.d/mosquitto.conf docker cp ./main-mosquitto.conf mosquitto:/etc/mosquitto/mosquitto.conf - 启动容器:
docker start mosquitto
内容的提问来源于stack exchange,提问作者M.Zayed
相关产品推荐
相关产品推荐

