
本文基于 anujdatar/cups:26.07.01 镜像OpenPrinting CUPS 2.4.10Ubuntu 24.04 服务器实测家里有一台联网打印机却只有插在旁边的那台电脑能打想给手机、笔记本、家里别的电脑都用上又懒得每台装驱动CUPSCommon UNIX Printing System是 Linux/Unix 世界里最常用的打印中间件——装在服务器上局域网设备都能往它提交任务由它转发到你的网络打印机。本文带你完成一次CUPS Docker 一键部署用 轩辕镜像 加速拉取anujdatar/cupsdocker run或 Compose启动在 Web 管理界面添加HP Smart Tank 210-220网络打印机打出测试页——全程基于 Ubuntu 24.04 实测命令可直接复制文末附14 张实测截图。实测环境CUPS 服务器 IP192.168.1.18打印机 IP192.168.1.20。一、CUPS 是什么CUPS是开源打印系统负责接收客户端打印任务、管理队列、选择驱动再把作业交给本地 USB 或网络打印机。OpenPrinting 维护的现代 CUPS 默认支持IPP Everywhere™——不少新打印机无需单独厂商驱动即可工作。镜像anujdatar/cups把 CUPS 打进容器典型场景场景说明网络打印机共享服务器接管打印机队列全屋电脑 / 手机统一打印家庭 / 树莓派轻量容器常开不用长期开某台 PCUSB 打印机共享挂载/dev/bus/usb后把本机 USB 打印机共享到局域网本文以网络打印机为例无需挂载 USB架构示意客户端设备 ──HTTP:631──▶ CUPS 容器 ──IPP/Socket──▶ 网络打印机 管理浏览器 ──http://服务器IP:631──▶ CUPS Web 界面二、环境要求项目建议操作系统Linux本文 Ubuntu 24.04Docker已安装 Docker 与 Docker Compose V2内存≥ 256 MBCUPS 容器极轻量CPU单核即可磁盘≥ 500 MB镜像 /etc/cups配置持久化端口631CUPS 默认 Web / IPP网络服务器与打印机在同一局域网能互访验证 Dockerdocker--versiondockercompose version若尚未安装 Docker可使用轩辕镜像一键脚本bash(wget-qO- https://xuanyuan.cloud/docker.sh)更多安装说明见 轩辕镜像使用手册。三、拉取镜像使用轩辕镜像加速拉取版本标签26.07.01dockerpull docker.xuanyuan.run/anujdatar/cups:26.07.01实测输出摘要26.07.01: Pulling from anujdatar/cups ... Digest: sha256:d4a850f6c9af254411966011ac47521b97dde7d7184c16c5c92727cfc5f43d21 Status: Downloaded newer image for docker.xuanyuan.run/anujdatar/cups:26.07.01 docker.xuanyuan.run/anujdatar/cups:26.07.01镜像页anujdatar/cups。其他标签见该页「标签列表」。四、检查端口与持久化目录4.1 确认 631 未被占用ss-tlnp|grep631无输出表示端口空闲。若宿主机已装系统 CUPS可先停用sudosystemctl stop cupssudosystemctl disable cups实测服务器上未安装系统cups.serviceFailed to stop cups.service: Unit cups.service not loaded.可忽略该提示直接进入下一步。4.2 创建配置目录CUPS 配置在容器/etc/cups挂载到宿主机后重建容器也能保留打印机设置mkdir-p/www/wwwroot/webtop/cups-data五、启动容器docker run本文实测路径为/www/wwwroot/webtop网络打印机场景无需--device /dev/bus/usb。dockerrun-d\--namecups\--restartunless-stopped\-p631:631\-eTZAsia/Shanghai\-eCUPSADMINadmin\-eCUPSPASSWORD123456\-v/www/wwwroot/webtop/cups-data:/etc/cups\docker.xuanyuan.run/anujdatar/cups:26.07.01参数说明-p 631:631映射 CUPS Web / IPP 端口TZ时区国内建议Asia/ShanghaiCUPSADMIN/CUPSPASSWORDWeb 管理登录凭据下文界面使用admin/123456-v ...:/etc/cups持久化打印机队列与配置安全提示示例密码123456仅便于演示。生产环境务必改为强密码且建议仅在内网访问 631勿将管理口裸暴露到公网。5.1 验证容器dockerps|grepcupsdockerlogs cups正常时docker ps类似374ab7cbfd55 docker.xuanyuan.run/anujdatar/cups:26.07.01 /entrypoint.sh ... Up ... 0.0.0.0:631-631/tcp, [::]:631-631/tcp, 5353/udp cups日志关键片段 useradd -r -G lpadmin -M admin echo admin:123456 chpasswd ... Current default time zone: Asia/Shanghai ... exec /usr/sbin/cupsd -f说明管理员用户已创建时区已设为上海cupsd前台运行中。六、Docker Compose 方式可选若偏好 Compose 管理可在/www/wwwroot/webtop创建docker-compose.ymlservices:cups:image:docker.xuanyuan.run/anujdatar/cups:26.07.01container_name:cupsrestart:unless-stoppedports:-631:631environment:-TZAsia/Shanghai-CUPSADMINadmin-CUPSPASSWORD123456volumes:-./cups-data:/etc/cups启动cd/www/wwwroot/webtopmkdir-pcups-datadockercompose up-ddockercomposepsdockercompose logs-fcups注意同一台机器不要同时用docker run和 Compose 起两个名为cups的容器。已用docker run部署成功则无需再 Compose下文实测均基于docker run。若以后要接USB 打印机在 Compose 中增加devices:-/dev/bus/usb:/dev/bus/usb或在docker run时追加--device /dev/bus/usb。七、确认打印机网络可达添加前先在服务器上探测打印机本文打印机 IP 为192.168.1.20ping-c3192.168.1.20curl-Ihttp://192.168.1.20实测ping0% 丢包网络可达curlHTTP 301响应头识别为HP Smart Tank 210-220 series (3D4L4A)HTTP/1.1 301 Moved Permanently Server: HP HTTP Server; HP Smart Tank 210-220 series - 3D4L4A; ... Location: https://192.168.1.20/若执行curl -I ipp://192.168.1.20/ipp/print报Protocol ipp not supported属正常现象——宿主机 curl 多数未编译 IPP 协议不代表打印机不支持 IPP。以 CUPS Web 界面添加为准。八、打开 CUPS 管理界面浏览器访问将 IP 换成你的 CUPS 服务器地址http://你的服务器IP:631实测地址为http://192.168.1.18:631。首页显示OpenPrinting CUPS 2.4.10说明服务已就绪。点顶部Administration浏览器会弹出登录框输入启动容器时设置的账号密码实测admin/123456点登录。进入管理页后左侧Printers区域有Add Printer右侧Server Settings可勾选Share printers connected to this system、Allow remote administration远程管理本机界面时需要保存后点Change Settings。九、添加网络打印机HP Smart Tank9.1 选择连接协议点Add Printer进入「添加打印机」向导。Discovered Network Printers可能为空不会自动发现所有打印机属正常。向下找到Other Network Printers选中互联网打印协议 (ipp) / Internet Printing Protocol (ipp)点Continue。若 IPP 失败可改选AppSocket/HP JetDirect连接串为socket://192.168.1.20:9100。HP Smart Tank 系列优先 IPP。9.2 填写连接 URI在Connection输入框填写本文实测可用ipp://192.168.1.20/ipp/print其他常见备选按需再试ipp://192.168.1.20:631/ipp/print ipp://192.168.1.20/ipp/printer点Continue。9.3 命名并共享字段实测值说明NameHP-Home队列名不要空格勿含/、#Descriptionmy Printer可读描述可随意Location空可选如「客厅」SharingShare This Printer勾选局域网其他设备可通过本 CUPS 共享打印点Continue。9.4 选择厂商与驱动Make列表中选择HP点Continue。Model列表中选择IPP Everywhere™列表顶部然后点Add Printer。HP Smart Tank 210-220 原生支持 IPP Everywhere无需精确到具体 hpcups 型号驱动。若列表中有HP Smart Tank 210-220 series亦可选用。9.5 设置默认选项进入「设置打印机选项」。实测将Media Size设为A4其余如 Media TypeStationery、cupsPrintQualityNormal、Output ModeRGB点Set Default Options。9.6 确认添加成功顶部点Printers进入打印机详情。状态应为Idle, Accepting Jobs, Shared驱动为IPP Everywhere (color)连接为ipp://192.168.1.20/ipp/print。十、打印测试页在打印机详情页打开Maintenance下拉菜单选择Print Test Page。页面提示测试页已提交Test page sent; job ID is HP-Home-1.返回打印机页可见任务状态变为ProcessingJobs 列表中HP-Home-1显示Rendering completed打印机吐出 CUPS 测试页含 CMYK / RGB 色块、Job ID、ippeve.ppd驱动信息等则部署路径闭环成功。十一、局域网客户端怎么用打印机已勾选Share This Printer后其他设备可通过 CUPS 服务器打印队列名实测为HP-Home系统大致步骤Windows添加打印机 → 按 IP →http://CUPS服务器IP:631/printers/HP-HomemacOS系统设置 → 打印机 → IP → 协议IPP地址填 CUPS 服务器 IP队列填HP-HomeLinuxlpadmin或系统设置添加 IPP 打印机URI 同上浏览器打开http://CUPS服务器IP:631在Printers中查看队列把CUPS服务器IP换成你的地址文中实测为192.168.1.18。十二、常见问题 FAQQ1浏览器打不开http://IP:631docker ps确认容器为Up端口映射631-631ss -tlnp | grep 631确认无冲突本机curl -I http://127.0.0.1:631是否有响应ufw / 云安全组是否放行 631建议仅内网Q2Discovered Network Printers是空的正常。许多网络打印机不会自动出现在发现列表需手动选Internet Printing Protocol (ipp)并填写 URI。Q3curl ipp://...报 Protocol not supported宿主机 curl 不支持 IPP与打印机无关直接在 CUPS Web 里添加即可。Q4IPP 页面一直转圈或失败先ping打印机 IP浏览器打开http://打印机IP看能否访问管理页依次试ipp://IP/ipp/print、ipp://IP:631/ipp/print、socket://IP:9100Q5如何升级镜像dockerpull docker.xuanyuan.run/anujdatar/cups:26.07.01dockerstop cupsdockerrmcups# 重新执行第五节 docker run保留同一 cups-data 卷Q6如何停止与卸载# 停止并删除容器保留配置dockerstop cupsdockerrmcups# Compose 方式cd/www/wwwroot/webtopdockercompose down# 连同配置目录一起删慎用rm-rf/www/wwwroot/webtop/cups-dataQ7631 能暴露到公网吗不建议。CUPS 管理面暴露在公网风险高。只开放内网或走 VPN / 反向代理并做好认证。十三、命令速查操作命令拉取镜像docker pull docker.xuanyuan.run/anujdatar/cups:26.07.01快速启动见第五节docker runCompose 启动cd /www/wwwroot/webtop docker compose up -d查看状态docker ps | grep cups查看日志docker logs -f cups管理界面http://服务器IP:631停止docker stop cups删除保留数据docker rm cupscups-data仍在十四、延伸阅读轩辕镜像页anujdatar/cups项目源码anujdatar/cups-dockerOpenPrinting CUPS项目首页与文档轩辕镜像 Docker 安装与加速使用手册至此从拉镜像、起容器、添加 HP Smart Tank192.168.1.20到吐出测试页整条链路已在 Ubuntu 24.04 上跑通。把队列共享出去家里其他设备就可以统一通过这台 CUPS 服务器打印了。