繁体   English   中英

DOCKER 如何使用 Windows 映像在 docker run 上设置密码和用户名?

[英]DOCKER How do I set an password and username on docker run with an windows image?

我想要的是

我想在启动容器时设置用户名和密码,例如:

docker run --password=mysupersafepw --user=myusername mcr.microsoft.com/windows/servercore

我有什么

目前,用户和密码已硬编码在我的 dockerfile 中:

RUN net USER /ADD ssh Passw0rd  && net localgroup Administrators ssh /ADD

我试过的

我已经听说过环境变量,但这(在 dockerfile 中)对我不起作用:

ENV user=ssh
ENV password=Passw0rd
[...]    
RUN net USER /ADD ${user} ${password}  && net localgroup Administrators ${user} /ADD

docker build 结果:

Step 10/14 : RUN net USER /ADD ${user} ${password}  && net localgroup Administrators ${user} /ADD
 ---> Running in 2552caf74946
The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.

More help is available by typing NET HELPMSG 2245.

您走在正确的轨道上,并且缺少一些参数。 您在 docker 文件中定义EVN user是正确的。 为了在运行时设置user的值,您应该将其指定为docker run -e user=ssh以便在您的情况下可以使用以下方法。

docker run -e password=mysupersafepw -e user=myusername mcr.microsoft.com/windows/servercore

假设您已在 dockerfile 中正确设置它们。

嗨,我遇到了同样的问题,通过运行为我执行的 powershell 脚本解决了它

docker run -e password=yourpassword 其余选项然后让脚本更改您在命令行中提供的密码。

Windows 映像的默认 shell 是cmd.exe 因此ARGENV应该像在任何 windows cmd: %myarg%中一样被取消引用。

所以在你的情况下,取消引用应该像这样: RUN net USER /ADD %user% %password% && RUN net localgroup Administrators %user% /ADD

此外, ENV语句应放在FROM语句之后,以使容器内的环境变量可用。

也可以使用以下命令将 shell 更改为 powershell: SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; $verbosePreference='Continue';"]

在这种情况下,取消引用将具有以下语法: $env:myenv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM