mirror of
https://github.com/jbowdre/runtimeterror.git
synced 2024-12-23 11:22:18 +00:00
83 lines
No EOL
3.7 KiB
Markdown
83 lines
No EOL
3.7 KiB
Markdown
---
|
|
date: "2020-09-22T08:34:30Z"
|
|
thumbnail: 8p-PSHx1R.png
|
|
usePageBundles: true
|
|
tags:
|
|
- docker
|
|
- windows
|
|
- wsl
|
|
- containers
|
|
title: Docker on Windows 10 with WSL2
|
|
---
|
|
|
|
Microsoft's Windows Subsystem for Linux (WSL) 2 [was recently updated](https://devblogs.microsoft.com/commandline/wsl-2-support-is-coming-to-windows-10-versions-1903-and-1909/) to bring support for less-bleeding-edge Windows 10 versions (like 1903 and 1909). WSL2 is a big improvement over the first iteration (particularly with [better Docker support](https://www.docker.com/blog/docker-desktop-wsl-2-backport-update/)) so I was really looking forward to getting WSL2 loaded up on my work laptop.
|
|
|
|
Here's how.
|
|
|
|
### WSL2
|
|
|
|
#### Step Zero: Prereqs
|
|
You'll need Windows 10 1903 build 18362 or newer (on x64). You can check by running `ver` from a Command Prompt:
|
|
```powershell
|
|
ver # [tl! .cmd_pwsh]
|
|
Microsoft Windows [Version 10.0.18363.1082] # [tl! .nocopy]
|
|
```
|
|
We're interested in that third set of numbers. 18363 is bigger than 18362 so we're good to go!
|
|
|
|
#### Step One: Enable the WSL feature
|
|
*(Not needed if you've already been using WSL1.)*
|
|
You can do this by dropping the following into an elevated Powershell prompt:
|
|
```powershell
|
|
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # [tl! .cmd_pwsh]
|
|
```
|
|
|
|
#### Step Two: Enable the Virtual Machine Platform feature
|
|
Drop this in an elevated Powershell:
|
|
```powershell
|
|
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # [tl! .cmd_pwsh]
|
|
```
|
|
And then reboot (this is still Windows, after all).
|
|
|
|
#### Step Three: Install the WSL2 kernel update package
|
|
Download it from [here](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi), and double-click the downloaded file to install it.
|
|
|
|
#### Step Four: Set WSL2 as your default
|
|
Open a Powershell window and run:
|
|
```powershell
|
|
wsl --set-default-version 2 # [tl! .cmd_pwsh]
|
|
```
|
|
|
|
#### Step Five: Install a Linux distro, or upgrade an existing one
|
|
If you're brand new to this WSL thing, head over to the [Microsoft Store](https://aka.ms/wslstore) and download your favorite Linux distribution. Once it's installed, launch it and you'll be prompted to set up a Linux username and password.
|
|
|
|
If you've already got a WSL1 distro installed, first run `wsl -l -v` in Powershell to make sure you know the distro name:
|
|
```powershell
|
|
wsl -l -v # [tl! .cmd_pwsh]
|
|
NAME STATE VERSION # [tl! .nocopy:1]
|
|
* Debian Running 2
|
|
```
|
|
And then upgrade the distro to WSL2 with `wsl --set-version <distro_name> 2`:
|
|
```powershell
|
|
PS C:\Users\jbowdre> wsl --set-version Debian 2 # [tl! .cmd_pwsh]
|
|
Conversion in progress, this may take a few minutes... # [tl! .nocopy]
|
|
```
|
|
Cool!
|
|
|
|
### Docker
|
|
#### Step One: Download
|
|
Download Docker Desktop for Windows from [here](https://hub.docker.com/editions/community/docker-ce-desktop-windows/), making sure to grab the "Edge" version since it includes support for the backported WSL2 bits.
|
|
|
|
#### Step Two: Install
|
|
Run the installer, and make sure to tick the box for installing the WSL2 engine.
|
|
|
|
#### Step Three: Configure Docker Desktop
|
|
Launch Docker Desktop from the Start menu, and you should be presented with this friendly prompt:
|
|
![Great news! We're supported.](lY2FTflbK.png)
|
|
|
|
Hit that big friendly "gimme WSL2" button. Then open the Docker Settings from the system tray, and make sure that **General > Use the WSL 2 based engine** is enabled. Now navigate to **Resources > WSL Integration**, confirm that **Enable integration with my default WSL distro** is enabled as well. Smash the "Apply & Restart" button if you've made any changes.
|
|
|
|
### Test it!
|
|
Fire up a WSL session and confirm that everything is working with `docker run hello-world`:
|
|
![Hello, world!](8p-PSHx1R.png)
|
|
|
|
It's beautiful! |