如何从 Docker 打印(到打印机)

问题描述 投票:0回答:1

我正在使用 Docker Compose,它将在生产中的 Linux 平板电脑上运行。我有一个提供 Web GUI 的容器。用户将单击 GUI 中的“打印”按钮,这将导致某种请求(可能是到另一个容器中的 Flask 的 HTTP,这可能会将其转发到某个其他容器),并且该请求将导致一些数据被发送到打印机。

我只能想象,我的第一步是能够从 Docker 容器内部将数据发送到打印机。任何 Docker 容器。然后,我可以利用这些知识,了解如何从 Docker 向打印机发送内容,将打印合并到我的系统中。

这就是我正在使用的基础设施。它可以简单地简化为“我想从 Docker 容器打印到打印机”。我正在 Mac 上工作,我可以使用

lp
从 Mac 进行打印。所以我知道与打印机的连接正常。

我尝试了一些容器,包括

olbat/cupsd
lpstat -r
几乎总是说调度程序正在运行,但
lpstat -v
总是显示没有设置目的地。

我和我的 DevOps 人员整天都在为这个问题而苦苦挣扎。有各种关于在 Docker 中设置 CUPS 的文章和存储库,但它们都在某个地方存在漏洞,他们说“使用 fooglesplatter 连接到打印机”,但没有告诉您 fooglesplatter 是什么。或者(作为更具体的示例)他们将讨论如何设置 CUPS 仪表板以在本地计算机上添加打印机,然后说“瞧!您可以打印!”而不告诉你在容器中做什么。或者他们会引用我的机器上不存在的conf文件。或者其他让我们完全困惑的事情。

完成此操作的人可以发布(或指导我)一个分步指南,该指南基本上对待我就像我以前从未接触过计算机一样吗?假设没有任何知识并详细说明了每一步?我们是明智的 Docker 用户,我的 DevOps 人员比我聪明得多,但我们都不知所措。

我知道这是一个疯狂的要求。也许这不是一个合适的问题。如果必须的话,请关闭它。但我们陷入了困境,我真的希望有人可以帮助我们。

docker printing cups
1个回答
0
投票

我最近在 Ubuntu 主机和 Ubuntu 容器上得到了这个工作。希望 Mac 主机也能使用类似的功能。

简单的答案是将 CUPS 套接字绑定安装到容器中,以便容器可以通过套接字发送打印作业。

以下是动态设置容器以发送打印作业的示例。您可能希望将其转换为 docker 文件。我从主机系统上的终端启动,然后启动容器、安装 CUPS 并打印一条消息。

don@host$ sudo docker run -it --rm -v /run/cups/cups.sock:/run/cups/cups.sock phusion/baseimage:focal-1.2.0 bash
root@dcb243587fa7:/# apt update
[...]
root@dcb243587fa7:/# apt install -y cups-client
[...]
root@dcb243587fa7:/# lpstat -dv
system default destination: Some-Printer
device for Some-Printer: hp:/net/some_printer...
device for PDF: cups-pdf:/
device for Other-Printer: ipps://other_printer...
root@dcb243587fa7:/# echo "Hello, World!" | lp
request id is HP-Laserjet-M604-M605-M606-302 (0 file(s))
root@dcb243587fa7:/#

最后一个命令实际上从打印机中吐出一张纸,因此基本功能正在工作。

我们仍在研究细节。 PDF 的比例似乎有问题,有时整个系统会停止工作,需要重新启动容器。

© www.soinside.com 2019 - 2024. All rights reserved.