eclipse-mosquitto 中的 docker exec 错误

Posted

技术标签:

【中文标题】eclipse-mosquitto 中的 docker exec 错误【英文标题】:error in docker exec in eclipse-mosquitto 【发布时间】:2021-05-10 18:35:50 【问题描述】:

eclipse-mosquitto 在 Ubuntu 上使用 Docker 安装它们。 我想执行“docker exec”命令,但它给出了以下错误? 你能帮忙吗?

sudo docker ps

输出:

CONTAINER ID: b416d716ffd6   IMAGE: eclipse-mosquitto     COMMAND: "/docker-entrypoint.…"   CREATED: 2 days ago   STATUS: Up 44 minutes   PORTS: 0.0.0.0:9001->9001/tcp, 0.0.0.0:11883->1883/tcp   NAME: charming_bohr

命令:

sudo docker exec -it b416d716ffd6 /bin/bash

输出: OCI 运行时执行失败:执行失败:container_linux.go:370:启动容器进程导致:执行:“/bin/bash”:stat /bin/bash:没有这样的文件或目录:未知


for:自代理启动以来接收到的总字节数。

sudo docker exec -it b416d716ffd6 $SYS/broker/bytes/received

输出:

OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "/broker/bytes/received": stat /broker/bytes/received: no such file or directory: unknown

【问题讨论】:

您好,第一个错误表示在容器中找不到/bin/bash,可能是没有安装。您可以尝试改用sh -> sudo docker exec -it b416d716ffd6 sh 【参考方案1】:

有两个不同的问题。

    eclipse mosquitto 映像不包含 bash,因此您需要使用不同的 shell,例如 sh

    `sudo docker exec -it b416d716ffd6 /bin/sh

    $SYS/broker/bytes/received 是一个特殊的 topic,由 mosquitto 在内部自动管理,您可以“从外部”访问它,而无需在正在运行的容器中执行任何操作,例如,您可以使用 mosquitto sub ( sudo apt-get install -y mosquitto_clients,如果你还没有的话)

    mosquitto_sub -t '$SYS/broker/bytes/received'

如果 mosquitto 不在本地主机上,则添加 -h 选项,如果它不在默认端口上,则添加 -p,如果您希望它更详细,则添加 -d 等等。

供参考,mosquitto man page 中明确说明了对 MQTT 客户端的这种需求:

经纪人状态客户可以通过以下方式找到有关经纪人的信息 订阅 $SYS 层次结构中的主题,如下所示。标记的主题 因为静态仅在订阅时每个客户端发送一次。所有其他 主题每 sys_interval 秒更新一次。如果 sys_interval 为 0, 则不会发送更新。

请注意,如果您使用命令行客户端与 $SYS 主题和您的 shell 将 $ 解释为环境变量, 您需要将主题放在单引号 '$SYS/...' 中或转义 美元符号:$SYS/... 否则 $SYS 将被视为 环境变量。

$SYS/broker/bytes/received 自以来收到的总字节数 经纪人开始了。

【讨论】:

以上是关于eclipse-mosquitto 中的 docker exec 错误的主要内容,如果未能解决你的问题,请参考以下文章

将承诺的文件拖放到 Dock 中的应用程序图标上

可可:知道应用程序图标在dock中的位置

devexpress如何往dockManager中的dockpanel添加上如vs2010中解决方案右上角的小三角按钮

如何从 Dock 中的程序快捷方式中检索命令行参数?

将 Mac App 窗口中的“功能”拖到 Dock 上

Xamarin.Mac:关闭的窗口未重新打开以单击 Dock 中的应用程序图标