在RUN参数下调试Docker容器构建失败

时间:2018-08-09 10:23:49

标签: powershell docker batch-file cmd

我试图构建一个运行2个外部脚本的Docker容器,每当我的Docker守护进程解析包含'RUN'参数的行时,它们似乎都没有执行我要求的安装和设置。

RUN CMD powershell -Command net user anon Nona /add;
CMD powershell -Command wmic useraccount where "name='anon'"; \
CMD powershell -Command net localgroup User /add; \
CMD powershell -Command 'C:\Users\anon\getGNUPG_ALT.bat > output.log;' ;  \
CMD powershell -Command 'C:\Users\anon\getTor.bat' ;

要测试此容器,我正在构建映像并将其在容器(docker build -rm mycontainer)中运行。每当我运行%username%命令时,我都会得到containerAdministrator作为输出,并且我的批处理文件没有安装任何东西。

DockerFile中的语法是否存在问题,或者批处理文件可能是问题所在?

1 个答案:

答案 0 :(得分:0)

我认为您在这两个命令RUN和CMD之间感到困惑。

要回答您的问题,可以在开始时推迟“ RUN”,因为您不能在Dockerfile中封装两个命令。或用RUN命令替换所有CMD:

RUN powershell -Command net user anon Nona /add;
RUN powershell -Command wmic useraccount where "name='anon'"; \
RUN powershell -Command net localgroup User /add; \
RUN powershell -Command 'C:\Users\anon\getGNUPG_ALT.bat > output.log;' ;  \
RUN powershell -Command 'C:\Users\anon\getTor.bat' ;

此外,似乎不遵守CMD命令语法,请参阅官方文档:https://docs.docker.com/engine/reference/builder/

您还可以查看这个存在的问题:What's the difference between RUN and CMD in a docker file and when should I use one or the other?

最后,如果您使用Google进行搜索,则会发现比我们在此处的答案中能更好地解释它的教程,这里是一个示例:https://4sysops.com/archives/create-a-docker-container-on-windows-with-a-dockerfile/