DOCKER如何设置一个密码和用户名在docker上运行一个windows映像?

hfyxw5xn  于 2023-02-07  发布在  Docker
关注(0)|答案(3)|浏览(188)

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

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构建导致:

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

eyh26e7m1#

您的思路是正确的,但缺少一些参数。您在docker文件中定义EVN user是正确的。为了在运行时设置user的值,您应该将其指定为docker run -e user=ssh,以便在您的情况下执行以下操作。

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

前提是您已经在dockerfile中正确设置了它们。

7fyelxc5

7fyelxc52#

嗨,我有同样的问题是解决它运行powershell脚本,这样做对我来说
docker运行-e password=yourpassword,然后让脚本更改您在命令行中给出的密码。

cyvaqqii

cyvaqqii3#

Windows映像的默认shell为cmd.exe。因此,应采用与任何windows cmd相同的方式取消引用ARGENV%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

相关问题