4

我想要的是

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

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.
4

3 回答 3

0

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

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

于 2020-06-08T05:30:06.063 回答
0

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

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

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

于 2020-03-24T11:15:17.943 回答
0

Windows 映像的默认 shell 是cmd.exe. 因此ARGandENV应该像在任何 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

于 2021-03-27T11:08:03.883 回答