1. docker for wsl2
在wsl2中使用docker的最佳实践不是在wsl2中安装docker,而是安装docker desktop
:
从docker官网下载并安装完成后,打开docker desktop
,选择setting->General
,确保Use the WSL 2 based engine
选项被勾选,然后选择右下角Apply&Restart
。
重启docker desktop
后,再次打开设置,确保setting->Resources->WSL INTEGRATION
选项页中你的WSL发行版被勾选。
完成以上步骤之后,打开你的wsl, 输入docker:
出现这一堆说明安装成功。
使用docker run helloworld
验证你的docker可以正常启动容器。
如果输入
docker
命令后无法启动,可以尝试sudo docker
2. k8s for wsl2
安装了docker desktop
后,可以通过setting->Kubernetes
,勾选Enable Kubernetes
来为你的wsl提供k8s服务,但由于网络问题,通常不可能成功。
所以我们要"换源"。
打开setting->Docker Engine
,将右侧配置文件改为:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": true
}
}
Apply&Restart
,重启docker desktop
。
现在我们还需要一些额外的镜像。 clone AliyunContainerService/k8s-for-docker-desktop 这个项目。
git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git
查看自己的docker desktop
上Kubernetes
的版本。
可以看到我们这里是v1.21.2
。相应的,我们进入刚才clone的文件夹下,切换到v1.21.2
分支
git checkout v1.21.2
切换分支后,在当前目录下执行:
.\load_images.ps1
如果因为安全策略无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行
Set-ExecutionPolicy RemoteSigned
命令
最后一步,setting->Kubernetes
确保Enable Kubernetes
被勾选,然后Apply&Restart
,这时候你的docker desktop
左下角会出现k8s的图标,并逐渐从黄色变成绿色,代表你的k8s环境启动成功。
References
Get started with Docker remote containers on WSL 2 Docker Desktop WSL 2 backend AliyunContainerService/k8s-for-docker-desktop 在 Docker Desktop 中启用 K8s 服务