如何从 docker 容器“avahi-browse”?

bar*_*nen 6 mdns avahi docker

我正在运行一个基于 ubuntu:14.04 的容器,我需要能够在其中使用avahi-browse。然而:

(.env)root@8faa2c44e53e:/opt/cluster-manager# avahi-browse -a
Failed to create client object: Daemon not running
(.env)root@8faa2c44e53e:/opt/cluster-manager# service avahi-daemon status
Avahi mDNS/DNS-SD Daemon is running
Run Code Online (Sandbox Code Playgroud)

我遇到的实际问题是pybonjour错误;pybonjour.BonjourError: (-65537, 'unknown')但我读过这与 avahi-daemon 的问题有关。

所以; 如何从容器连接到 avahi-daemon?

PS 我必须在 avahi-daemon.conf 填充中关闭 dbus 才能启动它,否则 avahi-daemon 将无法启动,出现如下 dbus 错误: (.env)root@8faa2c44e53e:/opt/cluster-manager# avahi-daemon Found user 'avahi' (UID 103) and group 'avahi' (GID 107). Successfully dropped root privileges. avahi-daemon 0.6.31 starting up. dbus_bus_get_private(): Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory WARNING: Failed to contact D-Bus daemon. avahi-daemon 0.6.31 exiting.

小智 10

据我测试,您可以通过 Unix 套接字使用主机的 avahi-daemon 进行 mDNS 解析,使用 /var/run/dbus 使 avali-browse 正常工作。

例如:

docker run -v /var/run/dbus:/var/run/dbus -v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket -ti debian:10-slim bash
Run Code Online (Sandbox Code Playgroud)

要在容器内进行测试:

apt-get update && apt-get install avahi-utils iputils-ping -y

ping whatever.local

avahi-browse -a
Run Code Online (Sandbox Code Playgroud)