WSL2 (三) Docker 安装
Docker 是一个开源的应用容器引擎,容器是完全使用沙箱机制,而且容器性能开销极低,我们可以用它做很多事情。
现在需要需要在 WSL2 内使用 Docker,安装一共有两种方法,以下分别演示
- 按照原 Linux 方式安装 Docker
- 安装 Docker Desktop(推荐)
一、按照原 Linux 方式安装 Docker
因为 WSL2 已经完整使用了 Linux内核了,此种方式和先前在 Linux虚拟机安装 Docker类似,步骤如下:
1 | curl -fsSL https://get.docker.com -o get-docker.sh |
执行脚本安装过程中,脚本提示“建议使用Docker Desktop for windows”,20s内按Ctrl+C会退出安装,所以需要等待20s,另外此种方式需要访问外网。
检查 Docker安装正常
1 | service docker status # 检查dockerd进程启动 |
注意:不同于完全 Linux方式,WLS2下通过apt install docker-ce
命令安装的 Docker无法启动,因为WSL2方式的 Ubuntu里面没有systemd。上述官方get-docker.sh安装的docker,dockerd进程是用ubuntu传统的init方式而非systemd启动的
二、安装 Docker Desktop(推荐)
Docker 专门开发了可以使用 WSL2
中的 Docker
守护进程的桌面管理程序 —— Docker Desktop for Windows
2.1、Docker Desktop 关联 WSL2
1、打开 Docker Desktop,
2、在设置 General菜单栏里勾选:Use the WSL 2 based engine(启用基于WSL2
的引擎复选框)
3、在 Resources 的 WSL Integration 中设置要从哪个 WSL2 发行版中访问 Docker,我这里用 Ubuntu
4、重启 Docker desktop for Windows,重启之后我们就可以在 WSL2 里用 docker 了
2.2、修改 Docker Desktop 默认存储位置
Windows 版本的 Docker-Desktop 默认安装路径是C盘太占空间了,所以得想办法把他们定义到我们想要的位置去
Docker Desktop的默认存储路径:
1 | C:\Users${用户文件}\AppData\Local\Docker |
Docker-desktop 在初始化的时候会创建两个 WSL子系统,这两个系统文件会默认保存在上述缓存路径下
- docker-desktop-data: 保存的镜像
- docker-desktop:保存的是程序
首先我们需要将 Docker Desktop 完全退出
PowerShell 查看状态,确保状态是关闭状态
1 | wsl -l --all -v |
2.2.1、导出 docker-desktop 和 docker-desktop-data 系统文件
1 | wsl --export docker-desktop <目标路径>\docker-desktop.tar |
举例:
1 | wsl --export docker-desktop Z:\WSL2\Docker\docker-desktop.tar |
2.2.2、注销子系统
1 | wsl --unregister docker-desktop |
2.2.3、导入子系统
1 | wsl --import docker-desktop <最终安装路径> <导出的系统文件路径> --version 2 |
举例:
1 | wsl --import docker-desktop Z:\WSL2\Docker\docker-desktop Z:\WSL2\Docker\docker-desktop.tar --version 2 |
2.2.4、查看效果
成功之后,我们可以去默认安装位置查看,wsl 文件为0字节
三、最后
现在我们可以在 WSL2 里执行df -Th
,会发现增加了一些新的与docker有关的挂载点。
WSL2 下原生 Linux安装 Docker方式和完全 Linux虚拟机安装 Docker类似,区别在于 WSL2下的 Linux不支持systemd
当然,如果想要在 WSL2 内支持 systemd 可以使用查看:https://github.com/DamionGans/ubuntu-wsl2-systemd-script 这个项目有完整的使用方法