Windows10 安装 Docker

   这几天想要个 Docker 环境练练手,因此在 Win10 工作电脑上安装 Docker。根据网上的教程,比如先在 Windows 系统的程序和功能中开启 WSL 和 Hyper-V 虚拟机等步骤,折腾来折腾去总是不对,看网友的帖子,估计是教程适应较旧的版本,但最新版的 docker 的依赖环境有了变化。现在一边安装一边尝试,把安装过程记录下来,提供一条成功路径,以供参考。


一、安装 Docker Desktop for Windows

  1. 在官网下载 Docker Desktop for Windows:https://docs.docker.com/desktop/install/windows-install/

  2. 双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。注意:保持默认选择 “Install required Windows components for WSL 2”和“Add shortcut to desktop” 2 个功能复选框。

  3. 安装完成后,会提示重启系统。

二、启动及测试 Docker

  1. 启动安装程序有两种方式:

    • 方式一:双击桌面上的 Docker Desktop,启动安装程序,该方式不能选择安装路径;
    • 方式二:在 cmd 里通过命令安装,可以按需设置参数,比如安装目录,更多参数
    1
    2
    3
    # 目标路径需要提前建立,如:D:\Program Files\Docker
    # 常用参数:--wsl-default-data-root:wsl 的分发磁盘位置,因为 Docker 现在采用 WSL2 的方式安装,所以这个配置相当于 Docker 镜像位置
    "Docker Desktop Installer.exe" install --installation-dir="D:\Program Files\Docker"
  2. 短暂初始化等待后,出现了如下错误界面:

  3. 根据错误描述(实际是根据网友博客提示,😓),需要手动安装 Linux 内核更新包,在安装后重启即可;

  4. 点击上图错误提示中的链接,会跳转到如下界面,按提示下载安装包:

  5. 下载完后,进行安装,一路 next(只有一两步),直到完成;

  6. 在完成 Linux 内核更新包安装后,点击错误提示里的 Restart 按钮进行 docker 重启,界面如下:

  7. 短暂等待后,出现新的错误😢:

  8. 选择了”Reset to factory defaults”按钮,然后又变成了“Docker Desktop stopped”,好吧,没找到解决方式,重启了次电脑;

  9. 重新启动桌面上 Docker Desktop,弹出确认接受协议窗口,点击接受,然后变成了“Docker Desktop starting…”,一直 starting;

  10. 综合网上的解决方式:第一种:Hyper-V 是否开启,有的说需要开启,有的说需要关闭,个人以为新版 docker 通过 wsl2 运行不需要 Hyper-V 所以不需要开启,然后本机的 Hyper-V 未开也谈不到关闭;第二种:执行 wsl 命令,管理员方式运行 PowerShell,执行如下命令:

    1
    wsl --update

  11. 在执行完上述命令后,变成了如下界面,貌似可以了:

  12. 点击“Start”开始引导教程(或者点击“skip tutorial”< 跳过教程 >),界面如下:

  13. 到此,应该算安装完成并成功启动了;看个人需求,可以选择“skip tutorial”,直接跳过教程。

  14. 按照引导顺利完成,如下图:

三、Docker 配置

1. 更改镜像存储位置

Docker Deskop 默认安装在 C 盘,镜像默认在目录 [C:\ 用户 \Administrator\AppData\Local\Docker\wsl\] 下,随着镜像增多,C 盘必然不堪重负,所以要迁移到其他地方,实现步骤如下:

  • 退出 Docker Desktop,右击运行中的 docker,选择[Quit Docker Desktop] 退出软件;执行命令,查看状态:

    1
    wsl --list -v

    多查看几次,直到全部停止,如下图:

  • 停止 WSL

    1
    wsl --shutdown
  • 导出镜像文件到新的盘符,目录需要提前建立,命令执行时长和镜像文件大小有关,分别执行以下两条命令导出两个镜像:

    1
    2
    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
  • 注销原来的镜像,分别执行以下两条命令:

    1
    2
    wsl --unregister docker-desktop-data
    wsl --unregister docker-desktop
  • 将导出的镜像再导回 WSL,并设置挂载目录,命令格式如下:

    1
    2
    # --vserion 设置版本号 不设置默认为 1
    wsl --import <Distribution Name> <InstallLocation> <FileName> --version 2

    根据上述命令格式,分别执行以下两条命令:

    1
    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”:
    1
    2
    3
    4
    "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn/",
    "https://hub-mirror.c.163.com/"
    ],
  • 运行重启;
  • 命令查看修改结果,Registry Mirrors 属性是否有新加入的地址:
    1
    docker info
  • 完成。

四、Docker 和 VMware 的冲突

  1. 通常情况下,如果同时需要 Docker 和 VMware 或者安卓虚拟机,会遇到 Hyper-V 冲突,无法共存或者说无法共同使用的问题;
  2. 冲突原因:VMware 或安卓虚拟机需要关闭 Hyper-V;Windows Docker 需要开启 Hyper-V;
  3. 开启 / 关闭 Hyper-V 的方式,管理员身份打开 Powershell,执行以下命令:
    1
    2
    3
    4
    # 关闭 
    bcdedit /set hypervisorlaunchtype off
    # 开启
    bcdedit /set hypervisorlaunchtype auto
  4. 经亲身尝试,Docker Desktop(v4.21.1)和 VMware Workstation 16 可以共存,不冲突;操作系统版本:Windows10 专业版(版本:22H2);查询网上资料,需要这三者的版本都高于一定版本才行,在本人去年安装时确实存在冲突的问题。(更新于 2023/7/31)

五、小插曲

  1. 上面改镜像加速配置,多加了个“https://index.docker.io/v1/”,应用后,就一直 starting 了,悲剧,没办法,然后“Reset to factory defaults”才正常,然后启动正常,但是镜像的位置又回到 C 盘了😂。