Очередная проблема с Докуром - не удается стартануть "учебный" контейнер. Смотрите сами - не работает ни на линуксовом, ни на виндовом движке:
> cd "C:\Program Files\Docker\Docker\"
> .\DockerCli.exe -SwitchWindowsEngine
> docker run -d -p 80:80 docker/getting-started
docker: Error response from daemon: open \\.\pipe\docker_engine_windows: The system cannot find the file specified.
See 'docker run --help'.
> .\DockerCli.exe -SwitchLinuxEngine
> docker run -d -p 80:80 docker/getting-started
docker: error during connect: This error may indicate that the docker daemon is not running.: Post "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/create": open //./pipe/docker_engine: The system cannot find the file specified.
See 'docker run --help'.
Пытаюсь перезапустить Docker через пункт Restart контекстного меню значка в трее. Вернулась вчерашняя проблема с незапускающимся Докером. Надо вручную включиться в движок:
> .\DockerCli.exe -SwitchWindowsEngine
Проверяю, ушла ли ошибка. С чего бы? Нет, не ушла.
Пробую повторить с elevated PowerShell. Тот же результат (да я и не сомневался).
Вспоминаю, что установка новая, а Docker теперь требует Hyper-V для работы с Windows (для того чтобы крутить MobyLinuxVm как host VM - см. https://stackoverflow.com/questions/52574789/docker-in-windows-need-hyper-v-enabled). Пытаюсь активировать данную фичу (см. https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v). Всего-то надо в elevated PowerShell выполнить:
> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Потребуется перезагрузка. После того, как компьютер будет перезапущен, снова пробую выполнить команды, указанные в начале статью, то бишь переключение на windows_engine и старт контейнера docker/getting-started.
Вот же собачье отродье женского рода!
Смотрю so called Диспетчер Hyper-V. Виртуалок нет. Перезапуск докера через трей. Повторная попытка - без толку. Попробую переустановить докер, может надо было сначала активировать Hyper-V (а че они в установщике не осилили активировать гипервизор-то).
Ха, вот значит где собака зарыта - они при установке рекомендуют (recommend) использовать WSL 2 вместо Hyper-V. Прям деприкейшн на деприкейшне. Ну ладно, WSL 2, так WSL 2. Помнится, вчера были проблемы с тем, что то-ли до, то-ли во время установки (не проверял) Docker Desktop встал WSL (который 1). Установка Docker, кстати инициировала запуск обновлений, а WSL не является компоментом ОС и опция обновления продуктов Microsoft при накате обновлений у меня выключена (применено умолчание). Поэтому WSL не обновился. Вчера обновил путем вызова wsl --update, но ужЭ после установки Docker. Что-ж попробую установить Docker еще раз, может с обновленным WSL 2 на этот раз все срастется.
Так, повторный ребут не требуется - вероятно я на правильном пути (ну или все апдейты уже установлены, но может в этом и смысл: утром апдейты, а вечером Docker). Но я на всякий противопожарный все-равно перезагружусь. Виндофсь все-таки.
Docker традиционно не стартует, выбираю WindowsEngine. И кстати теперь надо-таки после этого переоткрывать окно Docker Desktop, причем теперь, как и пишут на SO, от админа.
И тем не менее все эти мытарства не помогли. Б...ь! Библиотекарь то есть.
> net stop com.docker.service
> net start com.docker.service
Нет, не то. LinuxEngine тоже не фурычит.
Перезапусе Docker Desktop Service в Services. Бестолку.
И тут я такой: бл?, может поставить дистрибутив на wsl?
> wsl --list --online
> wsl --install SLES-15
Однако, нельзя просто взять и поставить дистро:
Installing, this may take a few minutes...
Installation Failed!
Error: 0x80370102
Press any key to continue...
А SLES-12? Нет, тоже нельзя.
Может, у меня отключена виртуализация в BIOS? Иду в диспетчер задач. На вкладке Производительность, под графиком - Виртуализация: Отключено. Вот же блин.
Перезагрузка, дробь по F1 и F10 (не помню какая из них). В Advanced - Virtualization Technology (VTx). Save? - Sure. - Exit. - Exit? - Yes, exit. - Okay.
Кстати запустился Docker Desktop без ручного SwitchWindowsEngine. Но этого недостаточно для того чтобы стартануть контейнер. Значит попробую установить дистро на WSL 2 еще разок. На этот раз все хорошо (если у вас нехорошо - посмотрите вот тут может что найдется от мигрени: https://appuals.com/wsl-register-distribution-error-0x80370102-on-windows-10/).
Делаю -SwitchLinuxEngine и docker run отрабатывает!
А вот как сделать то же самое на WindowsEngine я попробую разобраться, надеюсь, завтра. Ждите следующую статью.