Error: Address in use 1883 mosquito Docker

Error: Address in use 1883 mosquito Docker

在 ubuntu 16.04 中启动蚊子 docker 时出现错误。

@biswanath:~$ docker logs mosquitto-test
1609346169: mosquitto version 1.6.12 starting
1609346169: Config loaded from /mosquitto/config/mosquitto.conf.
1609346169: Opening ipv4 listen socket on port 1883.
1609346169: Error: Address in use

虽然我已经卸载了所有以前安装的mousquitto。但是 Ports(1883) 仍在被蚊子使用。需要帮助释放此端口 1883。

@biswanath:~$ sudo lsof -i TCP:1883
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mosquitto 2185 root    4u  IPv4  27174      0t0  TCP *:1883 (LISTEN)
mosquitto 2185 root    5u  IPv6  27175      0t0  TCP *:1883 (LISTEN)

@biswanath:~$ sudo systemctl stop mosquitto
Failed to stop mosquitto.service: Unit mosquitto.service not loaded.

当试图用 kill -9 PID 杀死时,它会再次创建。

@biswanath:~$ ps ax | grep mosq
13719 ?        Ss     0:00 /bin/sh /snap/mosquitto/387/launcher.sh
13759 ?        S      0:00 /snap/mosquitto/387/usr/sbin/mosquitto -c /snap/mosquitto/387/default_config.conf
14802 pts/2    S+     0:00 grep --color=auto mosq
@biswanath:~$ sudo kill -9 13719
@biswanath:~$ sudo killall -9 mosquitto
@biswanath:~$ ps ax | grep mosq
14931 ?        Ss     0:00 /bin/sh /snap/mosquitto/387/launcher.sh
14972 ?        S      0:00 /snap/mosquitto/387/usr/sbin/mosquitto -c /snap/mosquitto/387/default_config.conf
14978 pts/2    S+     0:00 grep --color=auto mosq

您已经有了另一个 Mosquitto 实例 运行。

使用 ps ax | grep mosq 查看 Mosquitto 是否仍在容器外 运行。如果找到它,请使用 sudo kill -9 PID 将 PID 替换为其进程 ID。或者你可以试试 sudo killall -9 mosquitto.

如果这不能解决问题,请检查 Docker。

使用 docker ps 列出当前 运行 所有 Docker 个容器。

使用 docker stop ID 替换每个容器的 ID,即 运行。

如果找不到 Mosquitto 实例,请重新启动计算机并重试。

看起来你是来自 snap 的 运行 蚊子。

您可以使用以下命令停止捕捉:

 $ snap stop mosquoitto

听起来您可能尝试启动 Mosquitto 两次,第一次是早期版本的遗留问题,需要删除。下面的话来自另一个线程中的post。

有一个运行 launcher.sh 的根 CRON 作业,其中包含 sudo mosquitto -d

我是怎么找到的。好吧,一旦我发现 CRON 有一个 @reboot 选项,我进一步查看并发现 CRON 是由包括 root 在内的用户使用的。所以我尝试了它并尝试 sudo crontab -l 希望使用 sudo 找到根 cronjobs 而不是 pi 用户作业,然后作为另一项工作。

在那之后,我整理了所有其他我调整过的东西,并在重启时重新启用了 systemd 作业。 sudo systemctl enable mosquitto.service

所以现在 2.0.11 可以正常工作了。我怀疑 CRON 作业是早期版本的 Mosquitto 遗留下来的(我使用的是 1.5 或 1.6),但是 2.0.11 的更新在创建 mosquitto.service 作业时并没有删除它。