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
我正在尝试在 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