Mosquitto 代理不会在 Raspberry 重启时以 Docker 重启

Mosquitto broker won't restart with Docker on Raspberry reboot

我用 Docker 在 Raspbian 上安装了 Mosquitto 代理,方法如下:

docker pull eclipse-mosquitto

docker run -d -p 1883:1883 -p 9001:9001 --name=mosquitto eclipse-mosquitto --restart=always

当我重新启动 Raspberry 时,容器似乎没有 运行ning,我无法连接到它。如果我再次尝试 运行,我会得到:

docker: Error response from daemon: Conflict. The container name 
"/mosquitto" is already in use by container 
"3187ab53a3a2067b9d6ce0sa647a8d90cb52485f5540ca4eacad1c4e662ffa9d". You have 
to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

所以我需要删除它

docker rm -f mosquitto

然后重新启动。

我想念什么?

Docker 引擎防止两个容器同名。

因此,如果您 运行 两次这样的命令:

docker run -d -p 1883:1883 -p 9001:9001 --name=mosquitto eclipse-mosquitto
docker stop mosquitto  # simulates your reboot
docker run -d -p 1883:1883 -p 9001:9001 --name=mosquitto eclipse-mosquitto

如您所见,第二次尝试将失败。

实际上,我猜你把选项 --restart=always 放在了错误的地方。 (更准确地说,图像名称后给出的参数不被视为 Docker CLI 选项,它们被提供给入口点:docker run [OPTIONS] image-name [ARGUMENTS]

你能试试这个(然后重启)吗?

docker run -d -p 1883:1883 -p 9001:9001 --name=mosquitto --restart=always eclipse-mosquitto

否则,你也可以这样做:

docker start eclipse-mosquitto

docker stop 或重新启动后无法成功重新启动容器。