版本要求
基于WSL2的Docker Desktop 需要系统内核满足如下条件:
Windows 10 64-bit: Home or Pro 2004 (build 19041) or higher, or Enterprise or Education 1909 (build 18363) or higher.
可以通过右键 我的电脑 -> 属性 查看Windows规格
如果使用Windows Update自动更新到2004版本。如果没有检测到更新,可以去微软官网下载“易升”工具并安装运行。工具会检测到更新并安装。
安装
下载安装
通过 https://docs.docker.com/desktop/windows/install/ 下载后直接进行安装
下载 Linux 内核更新包并安装
此时打开Docker Desktop后会提示安装WSL,如果不安装,则启动不了应用程序。所以根据提示通过https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载直接后安装
将WSL 2 设置为默认版本
打开 PowerShell,执行如下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
启动异常:System.InvalidOperationException
这时候打开Docker Deskstop 大概率会出现如下异常:
System.InvalidOperationException
Failed to set version to docker-desktop: exit code: -1
在PowerShell中使用wsl命令会提示 “参考的对象类型不支持尝试的操作。”
解决办法
下载NoLsp
可以通过连接 http://www.proxifier.com/tmp/Test20200228/NoLsp.exe进行下载,需要使用VPN。
或者点击下方的公众号名片,输入【nolsp】下载
配置
将下载的文件建议放在 C:\Windows\System32下,也可以放在任何你指定的位置,通过管理员运行CMD,执行如下命令
NoLsp.exe C:\Windows\System32\wsl.exe
Success!
如果出现异常,请检查文件路径。
启动wsl
重启Docker Desktop
测试
打开powershell终端,输入命令
docker run -d -p 80:80 docker/getting-started
启动后,通过浏览器访问http://localhost/出现以下页面则表示安装成功,后面就可以安心使用Docker带来的便利了。
配置加速器
Docker默认情况下使用的是DockerHub仓库,可以在终端通过Docker info命令查看:
但是国内从DockerHub拉取镜像有时会很慢,此时可以配置国内加速器服务,例如:
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
七牛云加速器:https://reg-mirror.qiniu.com
百度:https://mirror.baidubce.com
配置过程如下:
通过Setting -> Docker Engine 在右侧配置文件中通过registry-mirrors配置镜像加速器。
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
配置完成后重新启动Docker Desktop,而后通过docker info再次查看,可以发现镜像加速器已经生效。
镜像存储位置迁移
使用WSL2安装Docker后,默认存储位置是放在C盘。考虑到很多人C盘作为系统盘空间可能不太够,所以我们这里将存储位置迁移到其他盘里。
按照以下说明可以在保留现有镜像数据的情况下进行数据迁移,请严格按顺序执行,错了不要怪我!
停止Docker Desktop
右键单击Docker Desktop图标,选择 Quit Docker Desktop。退出完成后通过终端输入wsl -l -v,此时应该可以看到两个状态都已停止。
默认情况下,Docker Desktop for Window 会创建如下两个发行版(distro) C:\Users\javadaily\AppData\Local\Docker\wsl docker-desktop (对应distro/ext4.vhdx) docker-desktop-data (对应data/ext4.vhdx)
可以看到导出前目录属性
备份docker数据
通过下面指令可以将Docker Images及相关文件导出到 E盘
wsl --export docker-desktop-data "E:\docker-desktop-data.tar"
从wsl取消注册docker-desktop-data
请注意C:\Users\javadaily\AppData\Local\Docker\wsl\data\ext4.vhdx文件将被自动删除。
wsl --unregister docker-desktop-data
将导出的docker-desktop-data再导入回wsl,并设置成我们想要的路径,即新的镜像及各种docker使用的文件的挂载目录,我这里设置到E:\docker\wsl
wsl --import docker-desktop-data "E:\\docker\\wsl" "E:\\docker-desktop-data.tar" --version 2`
执行完成后我们就可以在E:\docker\wsl 下看到docker数据了
验证测试
迁移完成后启动Docker并拉取 elasticearch 和kibana 后再次查看docker目录大小