Docker Community Forums

Share and learn in the Docker community.

Can't seem to run some 32-bit applications within a container on windows server 2016 anymore (azure)

Expected behavior

Spin up a Windows VM in Azure running Windows Server 2016. Install docker. Run the dockerfile listed below. it works. This worked a month ago I think.

Actual behavior

.\setup\sqlexpress.exe : The term '.\setup\sqlexpress.exe' is not recognized
as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is
correct and try again.
At line:1 char:328
+ ... press.exe -ArgumentList /qs, /x:setup; .\setup\sqlexpress.exe /q /ACT ...
+                                            ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (.\setup\sqlexpress.exe:String)
   [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : CommandNotFoundException
EventID            : 26
MachineName        : 9a09e0a0ac1f
Index              : 1173
Category           : (0)
CategoryNumber     : 0
EntryType          : Information
Message            : CriticalAppShutdownCleanupTimeout
Source             : Application Popup
ReplacementStrings : {sqlexpress.exe - Entry Point Not Found, The procedure entry point NtLoadKey3 could not be
                     located in the dynamic link library C:\Windows\System32\wow64.dll. }
InstanceId         : 26
TimeGenerated      : 8/4/2020 3:58:34 PM
TimeWritten        : 8/4/2020 3:58:34 PM
UserName           : NT AUTHORITY\SYSTEM
Site               :
Container          :

Information

PS C:\temp\docker2> docker version
Client: Docker Engine - Enterprise
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.11
 Git commit:        0da829ac52
 Built:             06/26/2020 17:20:46
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Enterprise (Unlicensed - not for production workloads)
 Engine:
  Version:          19.03.11
  API version:      1.40 (minimum version 1.24)
  Go version:       go1.13.11
  Git commit:       0da829ac52
  Built:            06/26/2020 17:19:32
  OS/Arch:          windows/amd64
  Experimental:     false

Steps to reproduce the behavior

Spin up a windows server 2016 server in azure. install hyperv and containers features. reboot. install docker reboot. run this docker file.

FROM mcr.microsoft.com/dotnet/framework/sdk:3.5

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

ENV attach_dbs="[]" \
    ACCEPT_EULA="_" \
    sqlUsername="***" \
    sqlPassword="***" \
    sqlServer=".\sqlexpress" 


RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
    Invoke-WebRequest -Uri "https://go.microsoft.com/fwlink/?linkid=829176" -OutFile sqlexpress.exe; \
    Start-Process -Wait -FilePath .\sqlexpress.exe -ArgumentList /qs, /x:setup; \
    .\setup\sqlexpress.exe /q /ACTION=Install /INSTANCENAME=SQLEXPRESS /FEATURES=SQLEngine /UPDATEENABLED=0 /SQLSVCACCOUNT='NT AUTHORITY\System' /SQLSYSADMINACCOUNTS='BUILTIN\ADMINISTRATORS' /TCPENABLED=1 /NPENABLED=0 /IACCEPTSQLSERVERLICENSETERMS; \
    Remove-Item -Recurse -Force sqlexpress.exe, setup

To get the event log, I started the bare docker container and ran the last step by hand in powershell. The sqlexpress.exe step does not create the setup directory and the event information above is put in the event log.