[Docker] 설치 시 오류
2020.09.15
Docker로 각종 작업을 해보려고 설치를 한 번 했다가, 잘 안 되는 것 같아 삭제를 했었다.
문제는 정상적인 방법으로 삭제한 게 아니라 관련된 폴더를 대충 삭제하려고 했다는 것이다.
이미 프로세스에서 돌아가고 있던 몇몇 파일들이 삭제가 덜 되었고,
그 상태에서 재설치를 하려고 하니 계속 에러가 났다.
정말 여러 방법들을 시도했어서 이제 어떤 순서로 해결했는지는 잘 기억이 나지 않지만,
내가 시도한 방법 중 몇 개를 여기에 적어본다.
1. 재부팅
재부팅은 정말 중요하다. 아래의 방법을 하나씩 사용했는데도 잘 안 되면 재부팅을 하고 다시 설치를 시도해보자.
2. cmd로 강제 삭제
1. cmd를 관리자 권한으로 실행한다.
2. C:\Program Files\Docker로 이동한다.
3. 아래의 command를 순서대로 입력한다.
takeown /R /F *
ICACLS * /T /Q /C /RESET
notepad.exe
4. 메모장이 열리면 아래의 코드를 붙여넣고 C:\Program Files\Docker에 .ps1이라는 파일로 저장한다.
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" }
5. cmd 밖으로 나와서 C:\Program Files\Docker 폴더에 들어간 후 .ps1 파일을 우클릭하여 PowerShell에서 실행을 누른다.
3. 레지스트리 에디터
1. 레지스트리 편집기를 연다.
2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 폴더에 간다.
3. 하위 폴더를 하나씩 들어다보면서 Docker Desktop이라는 걸 찾은 후 삭제한다.
4. Hyper-V Manager
https://github.com/docker/for-win/issues/2348
1. Hyper-V 관리자를 연다.
2. Desktop을 선택한 후 Docker Desktop VM을 삭제한다.
5. 리소스 모니터
1. 작업 관리자를 연다.
2. 성능 탭을 클릭한다.
3. 하단의 리소스 모니터 열기를 클릭한다.
4. 연결된 핸들을 클릭한다.
5. docker를 검색한다.
6. 나오는 모든 프로세스를 우클릭하여 종료한다.
나는 이 모든 걸 다 한 후 재부팅했더니 설치가 정상적으로 되었다.
정말 힘들었다.