Docker Windows 的桌面无法 运行 标记图像

Docker Desktop for Windows can't run tagged images

我正在尝试在 Windows 中制作一些基本的容器。多年来,我一直在 Linux 上使用 Docker,但这个问题对我来说是个新问题。

运行命令 docker build -f windowsTest3.df -t dockertest . 生成一个好的、带标签的构建。

...
 ---> 04064df75127
Step 13/13 : ENTRYPOINT C:/BuildTools/Common7/Tools/VsDevCmd.bat
 ---> Using cache
 ---> 9e098cff37a2
Successfully built 9e098cff37a2
Successfully tagged dockertest:latest

但是,尝试在容器内 运行 交互式 shell 会出错。 The system cannot find the path specified.

编辑:不敢相信我忘了列出命令... 要以交互方式启动容器,我 运行 宁 docker run -it dockertest,但我也尝试过 docker run -it dockertest cmd 及其变体。

运行 docker images 显示标记的图像存在,所以我无法弄清楚导致错误的原因。

docker images

C:\Users\devuser.DESKTOP-UV8CO47\Desktop\tmp>docker images
REPOSITORY                  TAG                    IMAGE ID            CREATED             SIZE
dockertest                  latest                 9e098cff37a2        41 minutes ago      12.3GB

这是我的路径位置:

C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.2\common\bin;C:\Program Files\Amazon\AWSCLI\bin\;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files\CMake\bin;C:\Program Files\dotnet\;C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\ProgramData\chocolatey\bin;C:\PRQA\PRQA-Framework-2.4.0\common\bin;C:\Users\DevUser\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.2\arm\bin;C:\Program Files\Git\bin;C:\Program Files-Zip;C:\Program Files\nssm-2.24\win64

这里是 dockerfile 的略微删节版本

FROM mcr.microsoft.com/windows:10.0.17763.316-amd64

# Restore the default Windows shell for correct batch processing.
SHELL ["cmd", "/S", "/C"]

# Download the Build Tools bootstrapper.
ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:/tmp/vs_buildtools.exe

# Install Build Tools excluding workloads and components with known issues.
RUN C:/tmp/vs_buildtools.exe --quiet --wait --norestart --nocache \
    --installPath C:\BuildTools \
    --all \
    --remove Microsoft.VisualStudio.Component.Windows10SDK.10240 \
    --remove Microsoft.VisualStudio.Component.Windows10SDK.10586 \
    --remove Microsoft.VisualStudio.Component.Windows10SDK.14393 \
    --remove Microsoft.VisualStudio.Component.Windows81SDK \
 || IF "%ERRORLEVEL%"=="3010" EXIT 0

ENV chocolateyUseWindowsCompression=false

RUN powershell set-executionpolicy remotesigned

RUN powershell -Command Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

RUN powershell -Command Install-PackageProvider -Name chocolatey -Force

RUN powershell -command "choco install -y git"

ENTRYPOINT C:/BuildTools/Common7/Tools/VsDevCmd.bat 

启动时请检查VsDevCmd.bat在容器内是否可用,位于C:/BuildTools/Common7/Tools/路径

也根据 this Doc 参考

On Windows, file paths specified in the CMD instruction must use forward slashes or have escaped backslashes \.

CMD c:\Apache24\bin\httpd.exe -w

也许试试你的 ENTRYPOINT 这样的。

ENTRYPOINT C:\BuildTools\Common7\Tools\VsDevCmd.bat 

您也可以使用CMD

CMD C:\BuildTools\Common7\Tools\VsDevCmd.bat

这个也可以试试,但推荐在一个以上

ENTRYPOINT C:\BuildTools\Common7\Tools\VsDevCmd.bat