2021年2月15日更新
当前版本的docker-desktop已经默认开启支持WSL2,安装时保持默认选项直接下一步,安装完毕之后重启电脑。之后docker会弹出WSL2尚未配置完毕,点击提示框中的链接,安装MSI扩展包,重启电脑即可愉快地使用docker。
想在Windows上运行docker,可谓是一言难尽。从最初的docker-toolbox到基于Hyper-v虚拟化的docker-desktop,无论是哪个方式,都有一堆一堆的坑点。
想要在windows上愉快地玩耍docker,难道就只能virtualbox装个linux再装docker?(或者docker-client配远程docker-daemon?)
于是,我决定换个坑踩。
配置WSL2
开启WSL
以管理员运行Powershell(开启WSL,如已开启可跳过)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
之后重新启动计算机。
启用“虚拟机平台”可选组件
以管理员身份打开 PowerShell 并运行:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
启用这些更改后,需要重新启动计算机。
默认启用 WSL 2
在 PowerShell 中运行:
wsl --set-default-version 2
安装Ubuntu
打开Microsoft Store,搜索ubuntu
并安装。
之后启动刚刚安装的Ubuntu。
安装docker
打开刚刚安装的Ubuntu,安装依赖:
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
信任 Docker 的 GPG 公钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
对于 amd64 架构的计算机,添加软件仓库:
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
最后安装
sudo apt-get update
sudo apt-get install docker-ce
安装完成
安装大功告成了,运行
docker run hello-world
不出意外的话,大概率会报错。
将当前用户添加到docker用户组
sudo adduser $USER docker
之后重启windows计算机。
重启完成后,打开Ubuntu,运行
sudo service docker start
输出[OK]。
运行
docker run hello-world
没有报错,。
结语
注:WSL2是基于Hyper-v的。
(不过感觉比我之前直接用Hyper-v管理平台安装Ubuntu Server启动还是要快。)