Найти в Дзене
Паша шКОДит

Когда докер сказал «хрю»

Долгое время без проблем использовал Docker Desktop, пока не решил в очередной раз обновиться (примерно до 4.53.0). И вот, после установки обновления, Docker полностью испарился из меню "Пуск" и поиска при этом оставшись в установленных программах. Удаление через "Установка и удаление программ" выдавало ошибку: Ссылка на объект не указывает на экземпляр объекта.
   в Docker.Installer.InstallWorkflow.UpdateInstallSettings()
   в Docker.Installer.InstallWorkflow.<DoHandleD4WPackageAsync>d__30.MoveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в Docker.Installer.InstallWorkflow.<DoProcessAsync>d__23.MoveNext() Было принято решение чистить систему от остатков прошлой инсталляции и устанавливать заново (при запуске установки выдавало, что уже установлена актуальная версия). when
Оглавление

Долгое время без проблем использовал Docker Desktop, пока не решил в очередной раз обновиться (примерно до 4.53.0). И вот, после установки обновления, Docker полностью испарился из меню "Пуск" и поиска при этом оставшись в установленных программах. Удаление через "Установка и удаление программ" выдавало ошибку:

Ссылка на объект не указывает на экземпляр объекта.
   в Docker.Installer.InstallWorkflow.UpdateInstallSettings()
   в Docker.Installer.InstallWorkflow.<DoHandleD4WPackageAsync>d__30.MoveNext()
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в Docker.Installer.InstallWorkflow.<DoProcessAsync>d__23.MoveNext()

Было принято решение чистить систему от остатков прошлой инсталляции и устанавливать заново (при запуске установки выдавало, что уже установлена актуальная версия).

when docker is dead
when docker is dead

Шаг 0. Бэкап данных

Backup and restore data

Делаем бэкап ваших данных в docker (если вам важно сохранить текущее состояние. https://docs.docker.com/desktop/settings-and-maintenance/backup-and-restore/#if-docker-desktop-fails-to-start

Шаг 1. Чистим физические файлы

Открываем поочередно в проводнике и удаляем:

C:\Program Files\Docker
%APPDATA%\Docker
%LOCALAPPDATA%\Docker
%PROGRAMDATA%\DockerDesktop

А также папку .docker в C:\Users\<USERNAME>

Шаг 2. Чистим реестр

Жмем WIN+R и вводим regedit.

Открываем меню Файл -> Экспорт и делаем бэкап.

Удаляем следующие ключи:

HKEY_CURRENT_USER\Software\Docker Desktop
HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall

В моем случае были только записи в HKEY_LOCAL_MACHINE - видимо потому, что docker устанавливался для всех пользователей, а не только текущего.

Дальше начинаем уничтожать всё относящееся к Docker - ищем через Ctrl + F.

Некоторые ключи у меня не удалились, но это не помешало повторной установке. Также я оставил записи связанные с wsdl.

После очистки перезагружаемся.

Шаг 3. Переустановка docker

Скачиваем последнюю версию с сайта https://www.docker.com/products/docker-desktop/ и устанавливаем.

Надеюсь, что данная статья поможет вам быстро восстановить рабочую машину. А если нет, надеюсь, что вы делали бэкапы реестра..