这几天想要个Docker环境练练手,因此在Win10工作电脑上安装Docker。根据网上的教程,比如先在Windows系统的程序和功能中开启WSL和Hyper-V虚拟机等步骤,折腾来折腾去总是不对,看网友的帖子,估计是教程适应较旧的版本,但最新版的docker的依赖环境有了变化。现在一边安装一边尝试,把安装过程记录下来,提供一条成功路径,以供参考。
一、安装Docker Desktop for Windows
- 在官网下载 Docker Desktop for Windows:https://docs.docker.com/desktop/install/windows-install/;
- 双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。注意:保持默认选择 “Install required Windows components for WSL 2”和“Add shortcut to desktop” 2个功能复选框。
- 安装完成后,会提示重启系统。
二、启动及测试Docker
-
启动安装程序有两种方式:
- 方式一:双击桌面上的Docker Desktop,启动安装程序,该方式不能选择安装路径;
- 方式二:在cmd里通过命令安装,可以按需设置参数,比如安装目录,更多参数:
# 目标路径需要提前建立,如:D:\Program Files\Docker # 常用参数:--wsl-default-data-root:wsl的分发磁盘位置,因为Docker现在采用WSL2的方式安装,所以这个配置相当于Docker镜像位置 "Docker Desktop Installer.exe" install --installation-dir="D:\Program Files\Docker"
-
短暂初始化等待后,出现了如下错误界面:
-
根据错误描述(实际是根据网友博客提示,😓),需要手动安装Linux内核更新包,在安装后重启即可;
-
点击上图错误提示中的链接,会跳转到如下界面,按提示下载安装包:
-
下载完后,进行安装,一路next(只有一两步),直到完成;
-
在完成Linux内核更新包安装后,点击错误提示里的Restart按钮进行docker重启,界面如下:
-
短暂等待后,出现新的错误😢:
-
选择了"Reset to factory defaults"按钮,然后又变成了“Docker Desktop stopped”,好吧,没找到解决方式,重启了次电脑;
-
重新启动桌面上Docker Desktop,弹出确认接受协议窗口,点击接受,然后变成了“Docker Desktop starting…”,一直starting;
-
综合网上的解决方式:第一种:Hyper-V是否开启,有的说需要开启,有的说需要关闭,个人以为新版docker通过wsl2运行不需要Hyper-V所以不需要开启,然后本机的Hyper-V未开也谈不到关闭;第二种:执行wsl命令,管理员方式运行PowerShell,执行如下命令:
wsl --update
-
在执行完上述命令后,变成了如下界面,貌似可以了:
-
点击“Start”开始引导教程(或者点击“skip tutorial”<跳过教程>),界面如下:
-
到此,应该算安装完成并成功启动了;看个人需求,可以选择“skip tutorial”,直接跳过教程。
-
按照引导顺利完成,如下图:
三、Docker配置
1. 更改镜像存储位置
Docker Deskop默认安装在C盘,镜像默认在目录 [ C:\用户\Administrator\AppData\Local\Docker\wsl\ ] 下,随着镜像增多,C盘必然不堪重负,所以要迁移到其他地方,具体操作步骤如下:
- 退出Docker Desktop,右击运行中的docker,选择[Quit Docker Desktop] 退出软件;执行命令,查看状态:
多查看几次,直到全部停止,如下图:wsl --list -v
- 停止WSL
wsl --shutdown
- 导出镜像文件到新的盘符,目录需要提前建立,命令执行时长和镜像文件大小有关,分别执行以下两条命令导出两个镜像:
wsl --export docker-desktop F:\Cache\Docker\wsl\distro\docker-desktop.tar wsl --export docker-desktop-data F:\Cache\Docker\wsl\data\docker-desktop-data.tar
- 注销原来的镜像,分别执行以下两条命令:
wsl --unregister docker-desktop-data wsl --unregister docker-desktop
- 将导出的镜像再导回WSL,并设置挂载目录,命令格式如下:
根据上述命令格式,分别执行以下两条命令:# --vserion 设置版本号 不设置默认为1 wsl --import <Distribution Name> <InstallLocation> <FileName> --version 2
wsl --import docker-desktop-data F:\Cache\Docker\wsl\data\ F:\Cache\Docker\wsl\data\docker-desktop-data.tar --version 2 wsl --import docker-desktop F:\Cache\Docker\wsl\distro\ F:\Cache\Docker\wsl\distro\docker-desktop.tar --version 2
- 重新启动Docker Desktop,完成;
- 启动正常后可以删除压缩包.tar文件。
- 【追更】:新版可以在设置界面里进行修改:
2. 镜像加速
- 在Docker Desktop中,打开设置界面,选择“Docker Engine”:
"registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn/", "https://hub-mirror.c.163.com/" ],
- 运行重启;
- 命令查看修改结果,Registry Mirrors属性是否有新加入的地址:
docker info
- 完成。
四、Docker和VMware的冲突
- 通常情况下,如果同时需要Docker和VMware或者安卓虚拟机,会遇到Hyper-V冲突,无法共存或者说无法共同使用的问题;
- 冲突原因:VMware或安卓虚拟机需要关闭Hyper-V;Windows Docker需要开启Hyper-V;
- 开启/关闭Hyper-V的方式,管理员身份打开Powershell,执行以下命令:
# 关闭 bcdedit /set hypervisorlaunchtype off # 开启 bcdedit /set hypervisorlaunchtype auto
- 经亲身尝试,Docker Desktop(v4.21.1)和VMware Workstation 16可以共存,不冲突;操作系统版本:Windows10 专业版(版本:22H2);查询网上资料,需要这三者的版本都高于一定版本才行,在本人去年安装时确实存在冲突的问题。(更新于2023/7/31)
五、小插曲
- 上面改镜像加速配置,多加了个“https://index.docker.io/v1/”,应用后,就一直starting了,悲剧,没办法,然后“Reset to factory defaults”才正常,然后启动正常,但是镜像的位置又回到C盘了😂。