我正在尝试创建一个基于 Windows 的容器来托管可以打印的服务。

我的容器主机是 Windows Server 2022。我安装了最新的 Docker Desktop 并使用它来构建映像:

docker build -t my-app-server-image .

然后运行容器:

docker run --rm --network nat --name my-container --hostname my-docker --isolation=hyperv -it my-app-server-image cmd

以下是 docker 文件的相关部分。安装我的应用程序的步骤已省略:

FROM mcr.microsoft.com/windows/server:ltsc2022
SHELL ["cmd", "/S", "/C"]

#...install my app...

RUN powershell -Command \
Add-PrinterPort -Name '192.168.21.75' -PrinterHostAddress '192.168.21.75';
Add-PrinterDriver -Name 'Generic / Text Only' -InfPath 'C:\windows\inf\prnge001.inf'; \
Add-Printer -Name 'PM45' -DriverName 'Generic / Text Only' -PortName '192.168.21.75';
Add-PrinterPort -Name '192.168.20.36' -PrinterHostAddress '192.168.20.36'; 
Add-PrinterDriver -Name 'Microsoft PCL6 Class Driver' -InfPath 'C:\windows\inf\prnms005.inf'; 
Add-Printer -Name HP4 -DriverName 'Microsoft PCL6 Class Driver' -PortName '192.168.20.36';

最后一行(“Add-Printer -Name HP4…”)失败,错误如下:

“添加打印机:执行指定操作时发生错误。查看错误详细信息以获取更多信息。”

但当然,没有错误细节。

PM45 打印机已成功创建,如果我构建图像而无需尝试创建 HP4 打印机,我就可以使用它在容器中进行打印。

我尝试过将端口创建为本地端口或 TCP 端口、直接引用打印机(通过如上所示的 IP 地址)或引用中间打印服务器上的打印队列等组合。我尝试过使用“Microsoft 增强型指向和打印兼容性驱动程序”和“Microsoft IPP 类驱动程序”(打印机支持 IPP 打印并进行了相应配置)。

我尝试了非容器中的这些各种组合,并成功创建了打印机并进行了打印。Windows 容器存在一些问题,阻碍了我。

我在网上搜索了有关从 Windows 容器打印的信息。以下是 Microsoft 的一条参考资料,似乎表明这是可行的:
https:

但成功率有限。如果有人能够在 Windows 容器中创建打印机并打印纯文本文档以外的内容,我很想听听你是怎么做到的。

0