.net - Sådan opretter du en Dockerfil til Run Docker i en Windows 2016 Container?

Indlæg af Hanne Mølgaard Plasc

Problem



Baggrund : Anmodning er at bruge en Windows 2016 dockerbeholder til at opbygge og implementere .net applikationer. Beholderen skal have forskellige byggeværktøjer installeret (MSbuild ... osv.) Og også docker som .net-applikationen skubbes til Azure Container Registry som containere.


Approach : Min tilgang er at oprette en dockerfil med de forskellige byggeværktøjer og docker-tjenesten installeret - indstillet til at starte automatisk, når jeg kører containeren.


Her er et eksempel på dockerfilen:


FROM microsoft/windowsservercore
MAINTAINER joe.user@nowhere.com

CMD powershell Start-Service Docker

SHELL ["powershell"]
RUN Invoke-WebRequest 
"https://download.microsoft.com/download/9/B/B/9BB1309E-1A8F-4A47-A6C5-ECF76672A3B3/BuildTools\_Full.exe" -OutFile "$env:TEMP
et.exe" -UseBasicParsing
RUN &  "$env:TEMP
et.exe" /Silent /Full

# Note: Add NuGet
RUN Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force

RUN Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
RUN Install-Package -Name docker -ProviderName DockerMsftProvider -Force
RUN Set-Service -Name Docker -StartupType Automatic
#RUN Get-Service Docker
#RUN Restart-Computer -Force


Problem : Det tager en genstart for at køre docker-tjenesten Jeg kan ikke starte serviceopbygningen dockerfilen.


Referencer : Jeg bruger følgende URL'er som reference til hvilke kommandoer der skal køres i dockerfilen.



  • https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-windows-server

  • https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon

  • https://docs.docker.com/install/windows/docker-ee/#docker-universal-control-plane-and-windows



Spørgsmål : Hvordan starter jeg docker-tjenesten ved hjælp af en dockerfil? Dette synes ikke at være muligt fra min testning. Har nogen nogen med succes startet docker service på en Windows 2016 server? Eventuelle forslag eller eksempler på hvordan man skal fortsætte vil blive værdsat. [2] [3] [4]


Tak på forhånd for din hjælp.

Bedste reference


Hvad du henviser til hedder Docker-in-Docker. Det understøttes i øjeblikket ikke for Windows (og er generelt en dårlig ide for Linux)


https://github.com/docker-library/docker/issues/49 (Jeg kan ikke finde noget fra MS-slutningen, men jeg gætter på dockerfolkene ved hvad de taler om) [5]