Last active
May 12, 2020 22:50
-
-
Save Iristyle/2b50521fd1088c50f3c8031c7944edf2 to your computer and use it in GitHub Desktop.
Script to clean images, volumes and networks, hyper-v VMs and disk cache from degraded Azure CI system / agent
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Write-Host "Waiting for containers to exit." -NoNewLine | |
while ($(docker ps -q)) | |
{ | |
Write-Host "." -NoNewLine | |
Start-Sleep 1 | |
} | |
Write-Host | |
Write-Host "Stopping Azure Agent" | |
Stop-Service vstsagent* | |
# This cleaned up LCOW, but kills WSL2 VM, so skip it | |
# Write-Host "Killing all running VMs" | |
# hcsdiag list | | |
# ? { $_ -match '^[^\s]' } | | |
# % { Write-Host "Killing $_"; hcsdiag kill $_ } | |
$images = docker image ls -q | Measure-Object | Select -ExpandProperty Count | |
Write-Host "Found $images Images to Remove" | |
$volumes = docker volume ls -q | Measure-Object | Select -ExpandProperty Count | |
Write-Host "Found $volumes Volumes to Remove" | |
Write-Host "Removing all docker managed state" | |
docker system prune --all --volumes --force | |
Write-Host "Removing Docker builder cache" | |
docker builder prune --force | |
Write-Host "Stopping Docker" | |
Stop-Service Docker | |
Write-Host "Inspect WSL2 VDisk" | |
$vhd = Join-Path ([System.Environment]::GetFolderPath('LocalApplicationData')) "docker\wsl\data\ext4.vhdx" | |
$diskPartScript = [System.IO.Path]::GetTempFileName() | |
@" | |
select vdisk file="$vhd" | |
detail vdisk | |
"@ | Out-File -FilePath $diskPartScript -Encoding Ascii | |
diskpart /s $diskPartScript | |
Write-Host "Compact WSL2 VDisk (skipped for now)" | |
@" | |
select vdisk file="$vhd" | |
compact vdisk | |
detail vdisk | |
"@ | Out-File -FilePath $diskPartScript -Encoding Ascii | |
# diskpart /s $diskPartScript | |
Remove-Item $diskPartScript | |
Write-Host "Cleaning Docker LCOW file system caches" | |
@( | |
"${ENV:ProgramData}\docker\image\lcow\layerdb\sha256", | |
"${ENV:ProgramData}\docker\image\windowsfilter\distribution\diffid-by-digest\sha256", | |
"${ENV:ProgramData}\docker\image\windowsfilter\distribution\v2metadata-by-diffid\sha256", | |
"${ENV:ProgramData}\docker\image\lcow\layerdb\mounts", | |
"${ENV:ProgramData}\docker\image\lcow\layerdb\tmp", | |
# cache and scratch directories get recreated | |
"${ENV:ProgramData}\docker\lcow" | |
) | | |
% { | |
$count = Get-ChildItem $_ -Recurse | Measure-Object | Select -ExpandProperty Count | |
Write-Host "Removing $count children from $_" | |
Remove-Item $_\* -Recurse -Force | |
} | |
Restart-Computer -Force |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment