January 28, 2020
把 CUPS 扔进 docker 里
开头废话
看了一下我竟然整整 3 年没写过 blog 了! 有生之年能更新一下也是挺难得的。
其实我这几年没少写东西,只是和工作重合度太高,都发在内网论坛里了。
以下是正文。
故事是这样的,某年某月滚了一把 Arch,然后打印机就不听话了,会在打印机开始打印的瞬间任务失败…… 由于打印机不常用,也不知道具体是哪次滚动,哪个库的更新引起的问题,很长时间都没搞定。
于是弃疗,把 cups
扔进 docker 里,固定一个版本解决。
先记得把本地的 cups 禁用
sudo systmctl disable --now org.cups.cupsd.socket
sudo systmctl disable --now org.cups.cupsd.service
先拉镜像
docker pull olbat/cupsd
建一个 volume 存状态
docker volume create cupsd
然后建一个 cups docker 的服务 /etc/systemd/system/cupsd.service
[Unit]
Description=Docker container for cupsd
Wants=docker.service
After=docker.service
Conflicts=org.cups.cupsd.service
StartLimitInterval=200
StartLimitBurst=5
[Service]
Restart=always
ExecStartPre=-/usr/bin/docker rm -f cupsd
ExecStart=/usr/bin/docker run --rm --name=cupsd \
-v /run/dbus:/var/run/dbus \
-v cupsd:/etc/cups/ \
--net=host olbat/cupsd
ExecStop=/usr/bin/docker stop -t 1 cupsd
[Install]
WantedBy=multi-user.target
启动
sudo systemctl enable --now cupsd.service
再在 /etc/cups/client.conf
里写上
ServerName 127.0.0.1:631
再打开 https://localhost:631/ 按一直以来的方法配好打印机即可。