版本: 20230904版 # Release v0.2.11 # Commit 18f12d2);
宿主机: Debian12 amd64 (宿主机并未安装avahi-daemon ,ip=192.168.1.216 );
操作:通过docker compose up -d 启动 "/opt/cups-web/docker-compose.yml" ,成功启动容器 cups ;
症状:在局域网Windows 11 浏览器进入 [http://192.168.1.216:631/] 中,添加打印机时,出现两个问题:
问题1. cups无法识别在局域网内的网络打印机 brother dcp l2508dw (形如 network dnssd://Brother%20DCP-L2508DW._ipp._tcp.local) ;
问题2. 即使解决了问题1,也无法将 dnssd://Brother%20DCP-L2508DW.\_ipp.\_tcp.local 解析出其ip , 从而无法添加网络打印机,表现为超时 。
然而,此时手动添加形如 ipp://192.168.1.134/ipp/printer 的网络打印机正常。
原因和解决方法:
- 问题1的原因:docker-compose.yml中的
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket 绑定挂载了宿主机的 dbus ,导致容器的dbus 和avahi-daemon 无法正常启动。进而使得 cups 无法识别网络打印机。
临时解决方法 修改 docker-compose.yml : 首先更改 桥接模式 为主机模式 ;其次, 删除 /run/dbus/system_bus_socket 的 绑定挂载(bind mount) 。
完整的docker-compose.yml修改版 :
services:
cups:
image: hanxi/cups-web:latest
container_name: cups
user: root
hostname: CUPS
network_mode: host
security_opt:
- apparmor:unconfined
environment:
- CUPSADMIN=${CUPSADMIN:-print}
- CUPSPASSWORD=${CUPSPASSWORD:-print}
- TZ=${TZ:-Asia/Shanghai}
volumes:
- ./.etc:/etc/cups
- ./.data:/data
- ./.uploads:/uploads
- ./.drivers:/opt/cups-drivers/data
- /dev/bus/usb:/dev/bus/usb
- /run/udev:/run/udev:ro
device_cgroup_rules:
- 'c 189:* rmw'
restart: unless-stopped
- 问题2的原因:
Dockerfile中未安装 libnss-mdns ,导致 mDNS 无法解析出.local 域名的ip 。解决方法:进入容器内安装 libnss-mdns:
apt update && apt install -y libnss-mdns
或者宿主机内执行:
docker exec cups sh -c 'apt update && apt install -y libnss-mdns'
版本: 20230904版 # Release v0.2.11 # Commit 18f12d2);
宿主机: Debian12 amd64 (宿主机并未安装avahi-daemon ,ip=192.168.1.216 );
操作:通过docker compose up -d 启动 "/opt/cups-web/docker-compose.yml" ,成功启动容器 cups ;
症状:在局域网Windows 11 浏览器进入 [http://192.168.1.216:631/] 中,添加打印机时,出现两个问题:
问题1. cups无法识别在局域网内的网络打印机 brother dcp l2508dw (形如 network dnssd://Brother%20DCP-L2508DW._ipp._tcp.local) ;
问题2. 即使解决了问题1,也无法将
dnssd://Brother%20DCP-L2508DW.\_ipp.\_tcp.local解析出其ip , 从而无法添加网络打印机,表现为超时 。然而,此时手动添加形如
ipp://192.168.1.134/ipp/printer的网络打印机正常。原因和解决方法:
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket绑定挂载了宿主机的 dbus ,导致容器的dbus 和avahi-daemon 无法正常启动。进而使得cups无法识别网络打印机。临时解决方法 修改 docker-compose.yml : 首先更改 桥接模式 为主机模式 ;其次, 删除
/run/dbus/system_bus_socket的绑定挂载(bind mount) 。完整的
docker-compose.yml修改版 :Dockerfile中未安装libnss-mdns,导致 mDNS 无法解析出.local域名的ip 。解决方法:进入容器内安装libnss-mdns:apt update && apt install -y libnss-mdns或者宿主机内执行: