我有一个docker映像(来自eclipse-temurin:17-jre-focal),我在其中安装CUPS并通过compose文件启动该映像。此映像在Azure Ubuntu VM上运行良好,但在运行ESXi和CentOS 9作为主机操作系统的物理NUC服务器上,CUPS服务将无法启动。实际上,所有可用的CUPS映像都不会启动。
错误:
X [15/Dec/2022:11:28:12 +0000] cupsdDoSelect() failed - Bad address!
X [15/Dec/2022:11:28:12 +0000] Listeners[0] = 4
X [15/Dec/2022:11:28:12 +0000] Listeners[1] = 5
X [15/Dec/2022:11:28:12 +0000] Listeners[2] = 6
X [15/Dec/2022:11:28:12 +0000] CGIPipes[0] = 7
E [15/Dec/2022:11:28:12 +0000] Scheduler shutting down due to program error.
经过大量搜索,似乎这个错误与丢失的杯子有关。/var/run/.
在容器中重新安装CUPS,虽然没有显示任何错误,但也不工作。原因是什么?我该如何解决这个问题?
TL;我有同样的问题,并通过降级我的Docker版本来解决它。
我正在使用Manjaro Linux,经过很长一段时间没有成功的修补,我尝试将Docker版本从23.0.1(这个似乎导致问题)降级到20.10.23版本。重新启动系统后,该问题不再出现。
如果这是这个版本的Docker的一个普遍问题,我们可能想要报告给Docker?重建问题:
docker run -dt --name my-docker ubuntu
docker exec -it my-cups bash
apt update && apt upgrade
apt install cups less
service cups start
less /var/log/cups/error_log
这似乎是Docker 23的一个问题。
将NOFILE限制设置为无限制,而cups无法处理。这个问题是已知的,并在docker和容器问题跟踪器上报告:
- https://github.com/containerd/containerd/issues/6707
- https://github.com/containerd/containerd/pull/7566
- https://github.com/moby/moby/issues/38814
可能的临时修复;
使用systemd单元修复此问题:
- 在/etc/systemd/system/cups.service.d
- 在该目录下创建一个名为limits.conf的文件
- 添加到文件:
limits.conf:
[Service]
LimitNOFILE=65536
然后运行"systemctl daemon-reload &&Systemctl restart cups">