1. docker for wsl2

在wsl2中使用docker的最佳实践不是在wsl2中安装docker,而是安装docker desktop
20210813164719

从docker官网下载并安装完成后,打开docker desktop,选择setting->General,确保Use the WSL 2 based engine选项被勾选,然后选择右下角Apply&Restart

20210813165210

重启docker desktop后,再次打开设置,确保setting->Resources->WSL INTEGRATION选项页中你的WSL发行版被勾选。

20210813165525

完成以上步骤之后,打开你的wsl, 输入docker: 20210813165705

出现这一堆说明安装成功。

使用docker run helloworld验证你的docker可以正常启动容器。

20210813170109

如果输入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
  }
}

20210813170651

Apply&Restart,重启docker desktop

现在我们还需要一些额外的镜像。 clone AliyunContainerService/k8s-for-docker-desktop 这个项目。

git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git

查看自己的docker desktopKubernetes的版本。

20210813171034

可以看到我们这里是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环境启动成功。

20210813171606

References

Get started with Docker remote containers on WSL 2 Docker Desktop WSL 2 backend AliyunContainerService/k8s-for-docker-desktop 在 Docker Desktop 中启用 K8s 服务