我们正在尝试dockerize一些旧的powerbuilder批处理作业,现有的代码需要一个ghostscript打印机安装与确切的名称(详细信息见这里)
微软在容器中打印假脱机程序的文档状态"依赖于将打印机驱动程序安装到主机的应用程序不能被容器化,因为不支持从容器内安装驱动程序">
我不知道这是否只是一个打字错误/误解,因为为什么任何应用程序都想将驱动程序安装到主机中?我需要它在容器中,它只用于驱动程序还是用于打印机?
假设这只是一个打字错误或误解,微软声称它不能在容器中完成,问题是
- 我可以通过主机(并提交到一个新的docker镜像)吗
- 我可以通过docker文件,使用一些MSI安装程序并在那里运行它是否有可能在docker映像中添加驱动程序和打印机?(如果没有,应该明确说明)
假设上面的语句不是打字错误/误解,那么应该可以将printer添加到docker中。因此我们使用
FROM mcr.microsoft.com/windows:1909
和隔离是hyperv
我们尝试从dockerfile
运行这个RUN powershell -command Add-Printer -Name "Test Printer" -DriverName "Microsoft Print to PDF" -PortName "PORTPROMPT:"
并得到以下错误
# InvalidData: (MSFT_Printer:ROOT/StandardCimv2/MS
# FullyQualifiedErrorId : HRESULT 0x80070006,Add-Printer
但是我找不到任何有意义的错误
我可以列出,重命名和删除打印机,但我不能添加现有的打印机,如果我执行
Get-PrintConfiguration "Microsoft Print To PDF"
I am getting
+ CategoryInfo : NotSpecified: (MSFT_PrinterConfiguration:ROOT/StandardCi...erConfiguration) [Get-PrintConfiguration], CimException
+ FullyQualifiedErrorId : HRESULT 0x8000ffff,Get-PrintConfiguration
所以在docker映像中,打印机似乎有问题。
你是否有可能将打印机添加到docker映像/容器中?
谢谢almir
可能是你在DockerFile命令中出错了。您必须将hole命令传递给powershell,而不仅仅是添加打印机。
我没有试过,但是我会这样做:
RUN powershell -command "Add-Printer -Name "Test Printer" -DriverName "Microsoft Print to PDF" -PortName "PORTPROMPT:""
这个问题很老了,但我很好奇有一个反馈:)