本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

服务的容器,将网络中的本地打印机通过AirPrint协议暴露给iOS/macOS设备,实现无线打印功能。
smb://user:pass@host/printer)macOS不支持此功能(详见:Docker for Mac网络限制)
# 启动临时容器(含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管理地址:[***] 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主机名(用于通过域名访问,如[***]) |
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命令添加打印机:
# 示例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
CUPS_WEBINTERFACE="yes"和CUPS_REMOTE_ADMIN="yes"(建议仅临时启用)# 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命令配置并测试打印机# 从容器复制配置文件 docker cp cups-test:/etc/cups/printers.conf ~/mycups/ docker cp cups-test:/etc/cups/ppd/PrinterName.ppd ~/mycups/
# ~/mycups/Dockerfile FROM drpsychick/airprint-bridge:latest COPY printers.conf /etc/cups/ COPY PrinterName.ppd /etc/cups/ppd/
docker build -t mycups:latest ~/mycups/ docker run -d --name my-airprint-bridge mycups:latest
无需额外配置,添加打印机后自动通过Avahi服务广播AirPrint协议,iOS/macOS设备可自动发现。
默认禁用,需通过以下步骤配置(基于"快速体验"中创建的容器):
进入容器生成配置文件:
docker exec -it cups-setup /bin/bash # 执行配置工具,按提示完成设置(生成gcp-cups-connector.config.json) (cd /etc/gcp-connector; gcp-connector-util init)
设置以下环境变量启用服务:
GCP_ENABLE_LOCAL="false" # 是否启用本地GCP服务 GCP_ENABLE_CLOUD="false" # 是否启用云端GCP服务 GCP_XMPP_JID="从配置文件获取" # XMPP JID GCP_REFRESH_TOKEN="从配置文件获取" # 刷新令牌 GCP_PROXY_NAME="从配置文件获取" # 代理名称
为使容器在本地子网可见,需创建macvlan网络接口(主机需与容器通信时需要):
eth=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网络(替换为实际子网和网关):
# 若无需主机与容器通信,parent可直接使用物理接口(如eth0) docker network create --driver macvlan --subnet 192.168.2.0/24 --gateway 192.168.2.1 -o parent=mac0 localnet
创建并启动容器:
cups_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驱动创建网络:
docker network create --driver=qnet --ipam-driver=qnet --ipam-opt=iface=bond0 --subnet <子网> <网络名称>
详见项目issue跟踪:drpsychick/docker-cups-airprint/issues
基于以下项目的出色工作:
欢迎通过以下方式贡献:
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429