这个容器是我更改来的,只支持N1 贝壳云 我家云 粒子云 等arm处理器的机器,集成了大部分的驱动,支持airprint,打印机通电,再布署容器,容器装好了,浏览器打开192.168.1.xxx:631打开cups控制界面,代码在下边,设置回复可见 是避免贴子常年沉下去。
docker run \
--name=cups \
--restart=always \
--net=host \
-v /var/run/dbus:/var/run/dbus \
-v ~/airprint_data/config:/config \
-v ~/airprint_data/services:/services \
--device /dev/bus \
--device /dev/usb \
-e CUPSADMIN="admin" \
-e CUPSPASSWORD="password" \
jysky007/cups:v1
复制代码
代码直接全部复制到ssh界面粘贴执行即可等待安装完毕
Name栏是给打印机命名,随便写,我就写M1005简单,其它不用写,下面sharing打勾,这样能够共享,点按键下一步
选择驱动,自带特别多的驱动,N1等ARM处理器的 要选带Foomatic/foo2xqx字样的驱动,别的驱动是适配X86的 据说HP没有提供ARM的插件,我的是M1005 只能选这个能用假如你的打印机没有驱动可以选择机型相仿的带Foomatic/foo2xqx的驱动 然后点击 Add Printer添加打印机。
设置打印机默认参数不用改 直接递交
点上图按键 打印一张测试页,顺利的话,打印机就工作了。
然后进win10 搜索打印机,正常的话能够搜索到了。
实测 安卓 IOS 都能搜索到打印机。不用安装第三方软件,直接系统自带复印服务里能够搜索到打印机。手机复印建议安装office,不要用wpswps复印似乎有兼容问题。
有个问题,打印机假如断电再开机, 发送复印任务就难以复印了,估计是容器辨识不到打印机必须重启cups,
我的我家云装的是灯大的小钢炮系统,管理热拔插的是mdev,解决方式是 利用mdev程序检查到打印机接入手动执行脚本让cups重启,
在/etc/mdev.conf 文件的最下边添加一行
usb/lp0 0:0 660 @/root/cupsstart.sh
复制代码
然后再在root目录里添加一个脚本名子 cupsstart.sh内容
#!/bin/sh
docker restart cups
复制代码
记得把脚本文件的权限改成0777,这样,mdev程序检查到打印机接入,就会触发执行脚本,脚本执行cups重启,很完美,无论cups容器有没有打开,只要打印机通电,容器就会启动或则重启,
(PS:后来发觉这段代码有个小瑕疵,会导致前面未能再添加新打印机,不过恐怕这不是问题,因为家里也就一台打印机,原因是,再添加打印机的时侯会导致/dev/usb/lp0 这个节点重新挂载,从而触发脚本重启cups,导致添加打印机界面未能步入,这是个死循环,我找到了完美的解决方式,
方法一。就是不用节点名子/usb/lp0来触发改为打印机的机型参数即用
$PRODUCT=3f0/3b17/100 0:0 660 @/root/cupsstart.sh
复制代码
代替前面那行代码,此处3f0/3b17/100是打印机的机型参数,可以执行lsusb命令查看。
方法二,就是假如真要再添加打印机或则更改打印机属性,就临时把那种脚本改个名子,这样就不会执行重启cups命令了嘿嘿。)
如果你的N1是armbian系统的话恐怕要用udev实现开机重启cups (注意 此法只针对docker版cups,如果是原生armbian直装cups,应该不存在这种问题) 具体可参考我的博客
如果是openwrt安装的docker, openwrt管理热拔插的是hotplug,方法思路一样找不到驱动 共享打印机,具体方式见本贴 36 38楼
有的打印机是GDI打印机 如HP 1020打印机通电后须要传送固件进去,这个可以看下72楼的方式。
airprint, arm处理器, 打印机, 部分的, ios
楼主还要咨询你一个问题:N1在openwrt的docker中运行的cups,如何实现开启打印机手动启动,小白,不是很懂 ...
第一步:找到目录/etc/hotplug.d/usb,里面有一个10-usb_printer的文件,打开后,修改上面的内容为:if [ x"$INTERFACE" = x"7/1/1" ] || [ x"$INTERFACE" = x"7/1/2" ]; then
/usr/bin/usb_printer_hotplug "$PRODUCT" "$ACTION"
sleep 10
/root/cupsstart.sh
fi
第二步:进入root目录,新建cupsstart.sh文件,内容为#!/bin/sh
docker restart cups,保存,设置文件权限为0775.
第三步,把打印机关掉后再开机,等待十几秒后,再瞧瞧是不是又可以愉快的复印了!
此方式在打印机开机时,会触发docker中的CUPS手动运行,关机时,cups也会手动运行,但是由于找不到打印机,所以此时的CUPS是不能正常工作的,相当于打印机死机的疗效找不到驱动 共享打印机,非常NICE!完美!
好的,谢谢,我理解你的意思,我昨天说的待机并没有断电,应该属于休眠状态,我刚刚又试了试,发现把权限 ...
那你要检测一下文件是不是真正保存了,这个文件正常保存后,里面的内容是不会手动从/root/cupssatrt.sh变为docker restart cups的,是不是一不小心复制粘贴的时侯,误操作了!我用的打印机是HP M1139,打印机休眠的时侯,就相当于打印机断电了,这时热拔插程序会让CUPS会再度运行一下,此时已找不到了打印机了,CUPS自然难以运行,就关掉了!
> jysky007/cups:v1
docker: Error response from daemon: Conflict. The container name "/cups" is already in use by container "3054b819ba95243d41faea3f77483bb38677e7c03c994fc8c2d1127b181749ec". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
最后一步这提示
Unable to find image 'jysky007/cups:v1' locally
v1: Pulling from jysky007/cups
828b35a09f0b: Pull complete
238e9b8fdf46: Pull complete
1d5b1b491959: Pull complete
269a6c6175ba: Pull complete
cfd498608d9a: Pull complete
c41f91c99586: Pull complete
01064bc5d5ed: Pull complete
d878b3d11188: Pull complete
Digest: sha256:790b78295e0f56d1e764c1b34de0a2021d8bb7644d8613feccf28729080251fc
Status: Downloaded newer image for jysky007/cups:v1
docker: Error response from daemon: linux runtime spec devices: error gathering device information while adding custom device "/dev/usb": no such file or directory.
ERRO[0145] error waiting for container: context canceled
麻烦问下,这是哪些问题
Status: Downloaded newer image for jysky007/cups:v1
docker: Error response from daemon: error gathering device information while adding custom device "/dev/usb": no such file or directory.
ERRO[0093] error waiting for container: context canceled
点评
jysky