wsl2安装docker
1.安装docker,以下方式二选一
1 原生linux安装docker方式
因为wsl2已经完整使用了linux内核了,此种方式和先前在linux虚拟机安装docker类似,步骤如下:
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ sudo service docker start
执行脚本安装过程中,脚本提示“建议使用Docker Desktop for windows”,20s内按Ctrl+C会退出安装,所以需要等待20s,另外此种方式需要访问外网。
检查docker安装正常
# 检查dockerd进程启动
service docker status
ps aux|grep docker
# 检查拉取镜像等正常
docker pull busybox
docker images
注意:不同于完全linux虚拟机方式,WLS2下通过apt install docker-ce命令安装的docker无法启动,因为WSL2方式的ubuntu里面没有systemd。上述官方get-docker.sh安装的docker,dockerd进程是用ubuntu传统的init方式而非systemd启动的。
2 Docker Desktop for windows方式
- Docker 也专门开发了可以使用 WSL2 中的 Docker 守护进程的桌面管理程序, 打开 Docker Desktop WSL2 backend 页面,下载最新的 Docker Desktop for Windows 程序 ,建议下载stable版本。下载地址:https://www.docker.com/products/docker-desktop
- 启动Docker Desktop for Windows,点击“设置”按钮,启用基于WSL2的引擎复选框(Use the WSL 2 based engine)
这个时候在 WSL 里面执行 docker 命令还是找不到的
- 在 Resources 的WSL Integration中设置要从哪个 WSL2 发行版中访问 Docker,如下图使用的是 Ubuntu。
- 重启 Docker desktop for Windows,重启完成后我们就可以在 WSL2里面使用 docker 命令了
- 在WSL2里面执行df -Th,会发现增加了一些新的与docker有关的挂载点。
总结
- WSL2下原生linux安装docker方式和完全linux虚拟机安装docker类似,区别在于WSL2下的linux不支持systemd。
- Docker Desktop for windows方式,其实质是利用docker的C/S架构,将windows模式下的docker对应docker.sock,docker客户端二进制和docker的数据目录挂载到WSL2里面的linux机器,在此linux机器下执行docker命令(docker命令为docker客户端),实质为客户端通过 挂载的/var/run/docker.sock文件与windows里面的dockerd服务端进程通信。如下图,我们在linux下重新启动linux下dockerd进程,linux模式下下载的busybox镜像又可以看到了,/var/run/docker.sock的时间戳也被更新了,此时客户端通过/var/run/docker.sock文件与linux下的dockerd服务端通信。
- 要使用哪个模式下的docker,重启下该模式下的docker服务端即可,本质都是修改/var/run/docker.sock文件。理论可以同时使用,但是需要修改docker配置,通过-H参数增加dockerd的tcp监听,执行具体docker命令时指定dockerd监听的对应IP和端口即可。
2021-09-23 21:34:44
共有0条评论!