
服务的容器,将网络中的本地打印机通过AirPrint协议暴露给iOS/macOS设备,实现无线打印功能。
smb://user:pass@host/printer)macOS不支持此功能(详见:Docker for Mac网络限制)
shell# 启动临时容器(含Web管理界面) docker run -d --rm -e CUPS_WEBINTERFACE="yes" -e CUPS_REMOTE_ADMIN="yes" --hostname mycups --name cups-setup drpsychick/airprint-bridge # 重要:仅当主机名/IP匹配时才能进行管理!(不支持端口转发等) # 主机名不匹配时CUPS错误:`Request from "172.17.42.1" using invalid Host: field "localhost:6310"` echo "CUPS管理地址:http://$(docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress }}' cups-setup):631" # -> 访问上述地址配置打印机 # 导出打印机配置文件(获取设备ID等关键信息) docker cp cups-setup:/etc/cups/printers.conf ./
重要:Docker环境变量仅支持单行且无双引号!
| 环境变量 | 默认值 | 说明 |
|---|---|---|
CUPS_ADMIN_USER | "admin" | CUPS管理员用户名 |
CUPS_ADMIN_PASSWORD | "secr3t" | CUPS管理员密码 |
CUPS_WEBINTERFACE | "yes" | 是否启用Web管理界面 |
CUPS_SHARE_PRINTERS | "yes" | 是否共享打印机 |
CUPS_REMOTE_ADMIN | "yes" | 是否允许远程管理 |
CUPS_ACCESS_LOGLEVEL | "config" | 访问日志级别(可选:all, access, config,详见man cupsd.conf) |
CUPS_LOGLEVEL | "warn" | 服务日志级别(可选:error, warn, info, debug, debug2,详见man cupsd.conf) |
CUPS_ENV_DEBUG | "no" | 是否启用调试模式(启动脚本调试及CUPS详细日志) |
CUPS_IP | $(hostname -i) | CUPS服务绑定IP(通常无需手动设置) |
CUPS_HOSTNAME | $(hostname -f) | CUPS主机名(用于通过域名访问,如https://cups.domain:631/) |
CUPS_SSL_CERT | "" | SSL证书内容(单行,换行符用\n表示) |
CUPS_SSL_KEY | "" | SSL密钥内容(单行,换行符用\n表示) |
AVAHI_INTERFACES | "" | Avahi监听接口 |
AVAHI_IPV6 | "no" | 是否启用IPv6支持 |
AVAHI_REFLECTOR | "no" | 是否启用mDNS反射器 |
AVAHI_REFLECT_IPV | "no" | 是否反射IPv4/IPv6流量 |
通过环境变量自动配置
设置以CUPS_LPADMIN_PRINTER为前缀的环境变量,容器启动时将自动执行lpadmin命令添加打印机:
shell# 示例1:添加IPP打印机 CUPS_LPADMIN_PRINTER1=lpadmin -p test -D '测试打印机' -m raw -v ipp://myhost/printer # 示例2:添加"通用"类型打印机 CUPS_LPADMIN_PRINTER2=lpadmin -p second -D '另一台打印机' -m everywhere -v ipp://myhost/second # 示例3:添加带驱动和选项的Samba打印机 CUPS_LPADMIN_PRINTER3=lpadmin -p third -D 'Samba打印机' -m '驱动字符串' -o PageSize=A4 -v smb://user:pass@host/printer # 启用打印机 CUPS_LPADMIN_PRINTER3_ENABLE=cupsenable third
通过Web界面手动配置
CUPS_WEBINTERFACE="yes"和CUPS_REMOTE_ADMIN="yes"(建议仅临时启用)shell# cupsd.conf配置示例 Listen *:631 WebInterface Yes <Location /> Order allow,deny Allow from all </Location> <Location /admin> Order allow,deny Allow from all </Location>
https://<容器IP>:631/admin或https://<容器主机名>:631,使用CUPS管理员账户登录配置通过文件自动配置
lpadmin命令配置并测试打印机shell# 从容器复制配置文件 docker cp cups-test:/etc/cups/printers.conf ~/mycups/ docker cp cups-test:/etc/cups/ppd/PrinterName.ppd ~/mycups/
Dockerfile# ~/mycups/Dockerfile FROM drpsychick/airprint-bridge:latest COPY printers.conf /etc/cups/ COPY PrinterName.ppd /etc/cups/ppd/
shelldocker build -t mycups:latest ~/mycups/ docker run -d --name my-airprint-bridge mycups:latest
无需额外配置,添加打印机后自动通过Avahi服务广播AirPrint协议,iOS/macOS设备可自动发现。
默认禁用,需通过以下步骤配置(基于"快速体验"中创建的容器):
进入容器生成配置文件:
shelldocker exec -it cups-setup /bin/bash # 执行配置工具,按提示完成设置(生成gcp-cups-connector.config.json) (cd /etc/gcp-connector; gcp-connector-util init)
设置以下环境变量启用服务:
shellGCP_ENABLE_LOCAL="false" # 是否启用本地GCP服务 GCP_ENABLE_CLOUD="false" # 是否启用云端GCP服务 GCP_XMPP_JID="从配置文件获取" # XMPP JID GCP_REFRESH_TOKEN="从配置文件获取" # 刷新令牌 GCP_PROXY_NAME="从配置文件获取" # 代理名称
为使容器在本地子网可见,需创建macvlan网络接口(主机需与容器通信时需要):
shelleth=eth0 # 物理网络接口 mac=AA:AA:AA:AA:AA # 物理接口MAC地址 mac2=AA:AA:AA:AA:AB # 容器虚拟MAC地址 # 启用混杂模式(支持多个MAC地址) sudo ifconfig $eth promisc # 创建macvlan接口 sudo ip link add mac0 link $eth address $mac type macvlan mode bridge # 刷新网络配置 sudo -- bash -c '( dhclient -r $eth && ip addr flush dev $eth && ip neigh flush all dhclient mac0 && service resolvconf restart || dhclient $eth )'
创建macvlan网络(替换为实际子网和网关):
shell# 若无需主机与容器通信,parent可直接使用物理接口(如eth0) docker network create --driver macvlan --subnet 192.168.2.0/24 --gateway 192.168.2.1 -o parent=mac0 localnet
创建并启动容器:
shellcups_ip=192.168.2.100 # 容器IP cups_name=cups.home # 容器主机名 docker create --name cups-airprint \ --net=localnet --ip=$cups_ip --hostname=$cups_name \ --memory=100M \ -p 137:137/udp -p 139:139/tcp -p 445:445/tcp \ -p 631:631/tcp -p 5353:5353/udp \ -e CUPS_ADMIN_USER=admin -e CUPS_ADMIN_PASSWORD=secr3t \ -e CUPS_LPADMIN_PRINTER1="lpadmin -p epson -D '爱普生打印机' -m raw -v smb://user:pass@192.168.2.2/epson" \ drpsychick/airprint-bridge:latest # 启动容器 docker start cups-airprint
QNAP设备不支持macvlan,需使用qnet驱动创建网络:
shelldocker network create --driver=qnet --ipam-driver=qnet --ipam-opt=iface=bond0 --subnet <子网> <网络名称>
详见项目issue跟踪:https://github.com/DrPsychick/docker-cups-airprint/issues
基于以下项目的出色工作:
欢迎通过以下方式贡献:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务