构建nanoserver映像:任务调度程序命令失败,但从容器命令行运行时成功



我正在尝试构建一个nanoserver映像,其中包括dockerfile中的任务调度:

FROM mcr.microsoft.com/windows/nanoserver:20H2  
USER ContainerAdministrator
RUN schtasks /create /tn test /tr test /sc weekly /d MON /st 00:00 /ru system
ENTRYPOINT cmd

当我尝试构建映像时,我得到以下结果:

Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM mcr.microsoft.com/windows/nanoserver:20H2
---> 32f64a4e8b69
Step 2/4 : USER ContainerAdministrator
---> Running in 63300b150890
Removing intermediate container 63300b150890
---> 347e5db0e75e
Step 3/4 : RUN schtasks /create /tn test /tr test /sc weekly /d MON /st 00:00 /ru system
---> Running in 0de9e3866ffb
ERROR: Class not registered
The command 'cmd /S /C schtasks /create /tn test /tr test /sc weekly /d MON /st 00:00 /ru system' returned a non-zero code: 1

但是,当我在使用相同的nanoserver映像的容器中运行相同的schtasks命令时,它成功了。

有人知道为什么命令在dockerfile中失败,但在容器命令行中工作吗?有人能解决这个问题吗?

谢谢你提前

另一个解决方法是创建一个bat脚本,写入test.bat,并在其中写入以下内容。

schtasks /create /tn test /tr test /sc weekly /d MON /st 00:00 /ru system

在dockerfile的末尾执行CMD ["test.bat"]

最新更新