recover-docker.ps1
内容速览
自动生成
- param( [
- int]$WaitSeconds = 90 ) $ErrorActionPreference = 'Stop' function Test-Command { param([
- string]$Name) return [
param(
[int]$WaitSeconds = 90
)
$ErrorActionPreference = 'Stop'
function Test-Command {
param([string]$Name)
return [bool](Get-Command $Name -ErrorAction SilentlyContinue)
}
if (-not (Test-Command -Name 'docker')) {
Write-Error 'docker command not found in PATH.'
}
$desktopExe = 'C:\Program Files\Docker\Docker\Docker Desktop.exe'
if (-not (Test-Path $desktopExe)) {
Write-Error "Docker Desktop executable not found: $desktopExe"
}
Write-Host 'Step 1/5: Update WSL'
wsl --update | Out-Null
Write-Host 'Step 2/5: Shutdown WSL'
wsl --shutdown
Write-Host 'Step 3/5: Kill stale Docker processes'
Get-Process -Name 'Docker Desktop', 'com.docker.backend' -ErrorAction SilentlyContinue | Stop-Process -Force
Write-Host 'Step 4/5: Start Docker Desktop'
Start-Process $desktopExe
Write-Host 'Step 5/5: Wait for Docker engine'
$ready = $false
for ($i = 1; $i -le $WaitSeconds; $i++) {
docker info *> $null
if ($LASTEXITCODE -eq 0) {
$ready = $true
break
}
Start-Sleep -Seconds 1
}
if (-not $ready) {
Write-Error "Docker engine is still unavailable after $WaitSeconds seconds."
}
Write-Host 'Docker engine is ready.'
docker version
原创文章,作者:花红,如若转载,请注明出处。