Search code examples
dockerdocker-for-windowsdocker-desktop

Docker Desktop for Windows can't run tagged images


I'm trying to do some basic containers in Windows. I've been using Docker on Linux for years, but this issue is new for me.

Running the command docker build -f windowsTest3.df -t dockertest . results in a good, tagged build.

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

However, attempting to run an interactive shell inside the container gives an error. The system cannot find the path specified.

Edit: Can't believe I forgot to list the command... To start the container interactively, I'm running docker run -it dockertest, but I've also tried docker run -it dockertest cmd and variations of that.

Running docker images shows that the tagged image exists, so I can't figure out what's causing the error.

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

Here are my path locations:

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\7-Zip;C:\Program Files\nssm-2.24\win64

Here is a slightly abridged version of the 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 

Solution

  • Please check if VsDevCmd.bat is available inside the container when it's starting, at C:/BuildTools/Common7/Tools/ path

    Also as per this Doc reference

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

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

    Maybe try your ENTRYPOINT like this.

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

    You can also use CMD

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

    Can also try this as well but recommended is above one

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