目标是在 docker 中运行一个 mosquitto 代理,它应该订阅同一网络中不同设备发布的主题。主机操作系统是 Centos(最小安装)。 不幸的是有两个问题:
"Error: Address in use"
– 即使主机或不同容器上没有运行其他 Mosquitto 服务。 (用netstat -tunlp
和docker ps -a
检查)我希望加载正确的配置后“正在使用的地址”错误将得到解决?如果有人能指出正确的方向,我将非常感激。我是不是忽略了什么?
1681677658: mosquitto version 2.0.15 starting
1681677658: Using default config.
1681677658: Starting in local only mode. Connections will only be possible from clients running on this machine.
1681677658: Create a configuration file which defines a listener to allow remote access.
1681677658: For more details see https://mosquitto.org/documentation/authentication-methods/
1681677658: Opening ipv4 listen socket on port 1883.
1681677658: Error: Address in use
1681677658: Opening ipv6 listen socket on port 1883.
1681677658: Error: Address not available
docker-compose.yml 和 mosquitto.conf:
---
version: '3.7'
services:
mosquitto:
image: eclipse-mosquitto
container_name: mosquitto
restart: always
volumes:
- /opt/mosquitto/config:/mosquitto/config
- /opt/mosquitto/mosquitto/data:/mosquitto/data
- /opt/mosquitto/mosquitto/log:/mosquitto/log
ports:
- 1883:1883
- 9001:9001
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
## Authentication ##
allow_anonymous true
到目前为止我尝试了什么:
设置用户/密码(
mosquitto_passwd -c /mosquitto/config/password.txt mqttuser
→ 编辑 mosquitto.conf(allow_anonymous false & password_file /mosquitto/config/password.txt)→ 重新启动容器)
将 mosquitto/config/mosquitto.conf 放在 docker-compose 目录中,而不是 /opt 并相应地更新 docker-compose.yml
尝试了不同的文件夹路径,例如蚊子/conf/mosquitto.conf
docker-compose.yml 中的不同路径,例如蚊子/config/mosquitto.conf:/mosquitto/config/mosquitto.conf
检查我的 libseccomp 是否过时(2.5.2-2.el9),因为有人有类似的问题link
在每次新的尝试之后,我移除容器并从头开始新的。重启机器。
编辑1:跑步
$ sudo docker exec mosquitto ls -al /mosquitto/config
total 4
drwxr-xr-x 2 mosquitt mosquitt 28 Apr 16 19:47 .
drwxr-xr-x 1 mosquitt mosquitt 6 Mar 29 19:43 ..
-rw-r--r-- 1 mosquitt mosquitt 155 Apr 16 19:47 mosquitto.conf
编辑 2: 我用
image: eclipse-mosquitto:2.0.14
和 image: eclipse-mosquitto:2
运行容器——仍然是同样的错误。
$ docker image ls
eclipse-mosquitto 2.0.14 e9f5cf5f8c52 8 months ago 11.8MB
$ docker stop mosquitto && docker rm mosquitto && docker image rm e9f5cf5f8c52 && docker system prune
$ docker compose up -d
$ docker image ls
eclipse-mosquitto 2.0.15 35a004f35c81 2 weeks ago 11.9MB
编辑 3: 使用
network_mode: host
且没有端口映射运行 docker-compose.yml。网络正常,我可以 ping 通其他设备。但仍然是同样的错误:using default config
和Error: Address in use
.
编辑 4: 删除旧容器和图像后,我用
$ docker compose up -d
→ $ sudo docker exec -it mosquitto /bin/sh
→ mosquitto -v
运行它(但我也通过 docker logs
检查了日志)
$ ps -ax | grep mosquitto
315868 pts/0 S+ 0:00 grep --color=auto mosquitto
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f7d6b130b64 syncthing/syncthing "/bin/entrypoint.sh …" 6 days ago Up 2 days (healthy) 0.0.0.0:8384->8384/tcp, 0.0.0.0:21027->21027/udp, :::8384->8384/tcp, :::21027->21027/udp, 0.0.0.0:22000->22000/tcp, :::22000->22000/tcp, 0.0.0.0:22000->22000/udp, :::22000->22000/udp syncthing
0fc19381338b ghcr.io/paperless-ngx/paperless-ngx:latest "/sbin/docker-entryp…" 6 days ago Up 2 days (healthy) 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp paperless-webserver
fe14e32c142b postgres:13 "docker-entrypoint.s…" 6 days ago Up 2 days 5432/tcp paperless-postgres
b7fe9d55b5de redis:7 "docker-entrypoint.s…" 6 days ago Up 2 days 6379/tcp paperless-redis
9ed6e4265a1e pihole/pihole:latest "/s6-init" 9 days ago Up 2 days (healthy) 0.0.0.0:53->53/udp, :::53->53/udp, 0.0.0.0:53->53/tcp, :::53->53/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:67->67/udp, :::80->80/tcp, :::67->67/udp pihole