recover-docker.ps1

2026.02.22 技术
内容速览
自动生成
  • 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
原创文章,作者:,如若转载,请注明出处。
发表评论

4 + 7 = ?