Skip to content

(20230904 Commit 18f12d2) docker版本cups无法识别、添加局域网中的网络打印机的解决 #107

Description

@nnssz

版本: 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. 问题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
  1. 问题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'

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions