這幾天公司筆電出了點小問題,因此需要將筆電中部分軟體做移除,在進行 Docker for windows 移除時意外的發現卡在預設的 Docker for windows 移除畫面非常久,重試幾次都是跑 10 分鐘以上都未進行到下一步,且移除畫面未提供任何進度,意外中發現不同的方式可以移除 Windows 上的 Docker,且移除速度較預設移除方式來的更快,這篇就來分享如何透過 非一般方式 移除 Docker,若有謬誤或是更快的方法歡迎留言一起討論。
解決方案
一般移除方式都是透過 Windows 控制台內建的移除程式,但其實在 Docker 官方上也有提供 Powershell 語法可以讓使用 Windows 10 的開發者完全將 Docker 移除 : How to completely remove Docker in Windows 10,執行語法如下
$ErrorActionPreference = "SilentlyContinue" kill -force -processname 'Docker for Windows', com.docker.db, vpnkit, com.docker.proxy, com.docker.9pdb, moby-diag-dl, dockerd try { ./MobyLinux.ps1 -Destroy } Catch {} $service = Get-WmiObject -Class Win32_Service -Filter "Name='com.docker.service'" if ($service) { $service.StopService() } if ($service) { $service.Delete() } Start-Sleep -s 5 Remove-Item -Recurse -Force "~/AppData/Local/Docker" Remove-Item -Recurse -Force "~/AppData/Roaming/Docker" if (Test-Path "C:\ProgramData\Docker") { takeown.exe /F "C:\ProgramData\Docker" /R /A /D Y } if (Test-Path "C:\ProgramData\Docker") { icacls "C:\ProgramData\Docker\" /T /C /grant Administrators:F } Remove-Item -Recurse -Force "C:\ProgramData\Docker" Remove-Item -Recurse -Force "C:\Program Files\Docker" Remove-Item -Recurse -Force "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Docker" Remove-Item -Force "C:\Users\Public\Desktop\Docker for Windows.lnk" Get-ChildItem HKLM:\software\microsoft\windows\currentversion\uninstall | % {Get-ItemProperty $_.PSPath} | ? { $_.DisplayName -eq "Docker" } | Remove-Item -Recurse -Force Get-ChildItem HKLM:\software\classes\installer\products | % {Get-ItemProperty $_.pspath} | ? { $_.ProductName -eq "Docker" } | Remove-Item -Recurse -Force Get-Item 'HKLM:\software\Docker Inc.' | Remove-Item -Recurse -Force Get-ItemProperty HKCU:\software\microsoft\windows\currentversion\Run -name "Docker for Windows" | Remove-Item -Recurse -Force #Get-ItemProperty HKCU:\software\microsoft\windows\currentversion\UFH\SHC | ForEach-Object {Get-ItemProperty $_.PSPath} | Where-Object { $_.ToString().Contains("Docker for Windows.exe") } | Remove-Item -Recurse -Force $_.PSPath #Get-ItemProperty HKCU:\software\microsoft\windows\currentversion\UFH\SHC | Where-Object { $(Get-ItemPropertyValue $_) -Contains "Docker" }且嘗試執行之後執行效率比原本的快很多 ( 原本的一直卡在第一步不動阿阿阿 XD),但也有一個小缺點,就是移除完畢之後不會將在 Windows 開始中的 Docker for window 執行 ICON 移除,如果要立即重新安裝的話會讓 Windows 誤判 Docker 還存在造成安裝失敗,解法也很簡單就是從 Windows 開始找到 Docker 之後,點選 Docker for windows 執行檔,Windows 系統找不到相關應用程式執行檔後在選擇移除,即可順利進行重新安裝 Docker for windows 的動作。
在 Docker 的 Github 上也有提供另一種解法,就是直接到 Windows 註冊表找到 Docker 註冊檔並刪掉他 (相當暴力的方法阿),由於第一種方式已經順利的將 Docker for Win 移除,這裡先做筆記將此方式記錄下來方便日後有可能使用到
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall除了 Docker 官方的移除方法,這篇文章也提供給大家另一種方式進行移除 Docker for win,如果跟我有一樣的需求可以參考嘗試看看 :)
參考
How to completely remove Docker in Windows 10
How to remove Docker for Windows if installer is broken
你可以直接裝linux vm,然後跑docker
回覆刪除Thanks.
回覆刪除幫了我一把.
前同事路過.