当提供 CUPS 服务器作为容器名称时,CUPS 客户端无法打印,但使用容器 IP 时可以正常工作:
样本docker-compose.yml
:
version: '3.7'
services:
client:
container_name: cups_client
image: cups_client
server:
container_name: cups_server
image: cups_server
客户端容器/etc/cups/client.conf
使用服务器容器的名称:
ServerName cups_server
但是,此配置不能正常工作(在客户端容器内运行):
$ lpstat -r
scheduler is running
$ lpstat -v
lpstat: Error - add '/version=1.1' to server name.
我尝试在 服务器名称中添加“/version=1.1” /etc/cups/client.conf
,但仍然显示错误。
但是,如果我使用服务器容器的 IP 地址在 中/etc/cups/client.conf
,打印工作正常:
ServerName 172.27.0.2
区别在于lpstat -v
:
$ lpstat -r
scheduler is running
$ lpstat -v
device for queue_name: ipp://192.168.0.10/ipp/port1
然而,名称解析在客户端容器中似乎工作正常:
$ getent hosts cups_server
172.27.0.2 cups_server
现在使用 IP 并不是一个真正的选择,因为打印配置在构建时就已经提供了,而此时 IP 尚不清楚。另外,据我了解,CUPS 应该可以很好地使用容器名称。
非常感谢您提出任何关于如何解决这个问题的想法,或者为什么杯子与容器名称不相符。
答案1
事实证明这是 CUPS 服务器配置问题。
CUPS 服务器登录/var/log/cups/error_log
:
Request from "172.27.0.3" using invalid Host: field "cups-server:631".
解决方案:
加入ServerAlias cups-server
/etc/cups/cupsd.conf