无法在docker容器中启动CUPS服务.Socket丢失



我有一个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单元修复此问题:

  1. 在/etc/systemd/system/cups.service.d
  2. 在该目录下创建一个名为limits.conf的文件
  3. 添加到文件:

limits.conf:

[Service]
LimitNOFILE=65536

然后运行"systemctl daemon-reload &&Systemctl restart cups">

最新更新