我试图构建一个运行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中的语法是否存在问题,或者批处理文件可能是问题所在?
答案 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/