При переходе во взрослую разработку рано или поздно мы сталкиваемся с лучшими практиками, со стандартами отрасли и таким образом узнаем о docker и хотим его использовать.
У меня компьютер на windows, действуем по привычной схеме, заходим на официальный сайт docker.com скачиваем дистрибутив, устанавливаем и… ничего не работает!!!
Первое что я увидел при запуске докера “wsl2 installation is incomplete” к счастью microsoft знают что с этим делать и даже дают подробную инструкцию.
Инструкция по установке WSL2 на Windows 10
Запускаем PowerShell с правами админа и включаем компонент “Подсистема Windows для Linux”
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
После этого включаем необязательный компонент “Платформа виртуальных машин”
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Перезагружаем компьютер
Скачиваем и устанавливаем пакет обновления ядра linux
После этого необходимо поставить WSL 2 версией по умолчанию, для этого запускаем PowerShell и выполняем команду
wsl --set-default-version 2
Пробуем снова запустить Docker
Ура все работает! Можем создавать контейнеры!
There’s two ways you can get it to work
- Using WSL 2 based engine.
- Without using WSL 2 based engine.
1 — Using WSL 2 based engine
In this page under «Download the Linux kernel update package».
and then Docker will start just fine
2 — Without using WSL 2 based engine
If the goal is just to get Docker running, one can simply start by unchecking the box that says «Use the WSL 2 based engine». This can give the following error
Required Windows feature(s) not enabled: Hyper-V.
Switch to WSL 2 based engine?
To enable Hyper-V:
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
So, in PowerShell 7 run the command
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
-All
which requires to Restart the computer to complete the operation. Then, once starting Docker again, you can get the following error
Docker failed to initialize
One or more errors occurred.
Eventually, just by clicking to start again, Docker will start running
There’s two ways you can get it to work
- Using WSL 2 based engine.
- Without using WSL 2 based engine.
1 — Using WSL 2 based engine
In this page under «Download the Linux kernel update package».
and then Docker will start just fine
2 — Without using WSL 2 based engine
If the goal is just to get Docker running, one can simply start by unchecking the box that says «Use the WSL 2 based engine». This can give the following error
Required Windows feature(s) not enabled: Hyper-V.
Switch to WSL 2 based engine?
To enable Hyper-V:
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
So, in PowerShell 7 run the command
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
-All
which requires to Restart the computer to complete the operation. Then, once starting Docker again, you can get the following error
Docker failed to initialize
One or more errors occurred.
Eventually, just by clicking to start again, Docker will start running
There’s two ways you can get it to work
- Using WSL 2 based engine.
- Without using WSL 2 based engine.
1 — Using WSL 2 based engine
In this page under «Download the Linux kernel update package».
and then Docker will start just fine
2 — Without using WSL 2 based engine
If the goal is just to get Docker running, one can simply start by unchecking the box that says «Use the WSL 2 based engine». This can give the following error
Required Windows feature(s) not enabled: Hyper-V.
Switch to WSL 2 based engine?
To enable Hyper-V:
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
So, in PowerShell 7 run the command
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
-All
which requires to Restart the computer to complete the operation. Then, once starting Docker again, you can get the following error
Docker failed to initialize
One or more errors occurred.
Eventually, just by clicking to start again, Docker will start running
After substituting Docker Desktop on Windows 10 with a more recent version, clicked to start it and got the following error
WSL 2 installation is incomplete
The WSL 2 Linux kernel is now installed using a separate MSI update package. Please click the link and follow the instructions to install the kernel update:
https://aka.ms/wsl2kernel
Press restart after installing the Linux kernel
By default, in Settings > General the option “Use the WSL 2 based engine” was already selected. This might be due to me already having Ubuntu 18.04 LTS locally.
If I go to Docker Desktop Settings > Resources > WSL INTEGRATION
You don’t have any WSL 2 distro. Please convert a WSL 1 distro to WSL
2, or install a new distro and it will appear here.How can I get Docker running?
Answer
There’s two ways you can get it to work
- Using WSL 2 based engine.
- Without using WSL 2 based engine.
1 – Using WSL 2 based engine
In this page under “Download the Linux kernel update package”.
and then Docker will start just fine
2 – Without using WSL 2 based engine
If the goal is just to get Docker running, one can simply start by unchecking the box that says “Use the WSL 2 based engine”. This can give the following error
Required Windows feature(s) not enabled: Hyper-V.
Switch to WSL 2 based engine?
To enable Hyper-V:
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
So, in PowerShell 7 run the command
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
-All
which requires to Restart the computer to complete the operation. Then, once starting Docker again, you can get the following error
Docker failed to initialize
One or more errors occurred.
Eventually, just by clicking to start again, Docker will start running
Attribution
Source : Link , Question Author : Tiago Martins Peres , Answer Author : Ramhound