scripts/Windows/install_docker_desktop_after_reboot.ps1
Write-Host "Completing the configuration of Docker for Desktop..." $ErrorActionPreference = "Stop" $i = 0 $finished = $false Write-Host "Waiting for Docker to start..." while ($i -lt (300)) { $i +=1 if ((Get-Process 'Docker Desktop' -ErrorAction SilentlyContinue) -and (Get-Process 'dockerd' -ErrorAction SilentlyContinue)) { $finished = $true Write-Host "Docker started!" break } Write-Host "Retrying in 5 seconds..." sleep 5; } if (-not $finished) { Throw "Docker has not started" } [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # What Windows is that? $osVer = [System.Environment]::OSVersion.Version # Major Minor Build Revision # ----- ----- ----- -------- # 10 0 17763 0 # Windows Server 2016 10.0.14393 # Windows 10 (1709) 10.0.16299 # Windows 10 (1803) 10.0.17134 # Windows Server 2019 10.0.17763 function PullRunDockerImages($minOsBuild, $serverCoreTag, $nanoServerTag) { $hypervFeature = (Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V -Online) $hypervInstalled = ($hypervFeature -and $hypervFeature.State -eq 'Enabled') if ($osVer.Build -ge $minOsBuild) { # Windows Server 2016 or above $isolation = $null if ($osVer.Build -gt $minOsBuild -and $hypervInstalled) { $isolation = 'hyperv' } elseif ($osVer.Build -eq $minOsBuild) { $isolation = 'default' } if ($isolation) { Write-Host "Pulling and running '$serverCoreTag' images in '$isolation' mode" docker run --rm --isolation=$isolation mcr.microsoft.com/windows/servercore:$serverCoreTag cmd /c echo hello_world docker run --rm --isolation=$isolation mcr.microsoft.com/windows/nanoserver:$nanoServerTag cmd /c echo hello_world } } } Switch-DockerLinux docker run --rm busybox echo hello_world docker run --rm alpine echo hello_world Switch-DockerWindows PullRunDockerImages 14393 'ltsc2016' 'sac2016' PullRunDockerImages 17134 '1803' '1803' PullRunDockerImages 17763 'ltsc2019' '1809' #Switch-DockerLinux |