"我想要的"
我想在启动容器时设置用户名和密码,例如:
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.
3条答案
按热度按时间eyh26e7m1#
您的思路是正确的,但缺少一些参数。您在docker文件中定义
EVN user
是正确的。为了在运行时设置user
的值,您应该将其指定为docker run -e user=ssh
,以便在您的情况下执行以下操作。前提是您已经在dockerfile中正确设置了它们。
7fyelxc52#
嗨,我有同样的问题是解决它运行powershell脚本,这样做对我来说
docker运行-e password=yourpassword,然后让脚本更改您在命令行中给出的密码。
cyvaqqii3#
Windows映像的默认shell为
cmd.exe
。因此,应采用与任何windows cmd相同的方式取消引用ARG
和ENV
:%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