在 Windows 系统下安装 Docker

1.打开 VT(Virtualization Technology)功能

1.1.检查 CPU 是否支持硬件虚拟化

按下Ctrl + Shift + Esc打开任务管理器,在任务管理器中选择性能选项卡,在性能选项卡中选择CPU选项卡,在 CPU 选项卡中查看是否存在虚拟化Hyper-V字样(如下图所示)。如果存在则说明你的设备支持硬件虚拟化,反之则反。

检查CPU是否支持硬件虚拟化

此外,还可以按下win + R打开命令行窗口,输入systeminfo命令查看系统信息,如果系统信息的最后存在Hyper-V 要求这一项,则说明你的设备支持硬件虚拟化,反之则反。

1.2.启用 VT 功能

  1. 重启电脑
  2. 进入 BIOS 设置
  3. 找到 VT 功能选项(其名字可能是Hyber-VVanderpoolSVMAMD-VIntel Virtualization TechnologyVT-X等),并将其开启。此外,如果看到了AMD IOMMUIntel VT-d选项,也需要将它们开启。
  4. 在 BIOS 中进行保存并退出,然后重启电脑,打开任务管理器查看虚拟化是否变为已启用状态。

2.安装 WSL(Windows Subsystem for Linux)

WSL 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机。

2.1.安装 WSL

以下是 WSL 的安装教程,该教程由微软官网的安装教程整理所得,具体步骤如下:

  1. 管理员模式打开PowerShellcmd
  2. 输入wsl --list --online命令,查看可用的 Linux 发行版。
  3. 输入wsl --install -d <Linux发行版>命令,安装你想要安装的 Linux 发行版。例如,要安装 Ubuntu 系统则输入命令:wsl --install -d Ubuntu安装完成后需要重启计算机
  4. 使用 WSL 安装 Linux 发行版的过程完成后,可以在开始菜单打开该 Linux 发行版,并可以为其创建快捷方式。 打开该 Linux 发行版后,系统将要求你为 Linux 发行版创建“用户名”和“密码”。
    • 用户名密码特定于安装的每个单独的 Linux 发行版,与 Windows 用户名无关。
    • 输入密码时,屏幕上不会显示任何内容。 这称为盲人键入。 你不会看到你正在键入的内容,这是完全正常的
    • 创建用户名密码后,该帐户将作为该 Linux 发行版的默认用户,并将在启动时自动登录
    • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令(不建议直接用 root 用户进行操作,仅在必要的时候使用 sudo即可 )。
    • 在 WSL 上运行的每个 Linux 发行版相互独立。 每当添加 Linux 发行版、重新安装或重置时,都必须重新配置一个 Linux 用户帐户

2.2.忘记 WSL 中 Linux 发行版的密码怎么办?

  1. 打开 PowerShellcmd,输入wsl --list --verbose命令,查看已安装的 Linux 发行版的详细信息,找到忘记密码的 Linux 发行版的名称。
  2. 输入wsl -d <Linux发行版> -u root命令进入 WSL 中的 Linux 发行版的根目录。例如,要进入 Ubuntu 系统的根目录,则输入命令:wsl -d Ubuntu -u root
  3. 输入passwd <username>命令,按提示重置密码。其中 <username> 是你想要重置密码的用户名。
  4. 输入exit命令,在PowerShellcmd中关闭 WSL。

2.3.跨 Windows 和 Linux 文件系统工作

跨文件系统的文件存储和性能

若想获得最快的性能速度,需要将在 Linux 中使用的文件存储在 WSL 文件系统中;将在 Windows 中使用的文件存储在 Windows 文件系统中。建议不要跨操作系统使用文件,除非有这么做的特定原因。

例如:在存储 WSL 项目文件时:

  • 使用 Linux 文件系统根目录:/home/<user name>/Project
  • 而不使用 Windows 文件系统根目录:/mnt/c/Users/<user name>/Project$C:\Users\<user name>\Project

在 WSL 命令行的文件路径中看到 /mnt/ 时,表示你正在使用已装载的驱动器。 因此,Windows 文件系统 C:/ 驱动器 (如:C:\Users\<user name>\Project) 在 WSL 命令行中装载时,其路径将显示为:/mnt/c/Users/<user name>/Project$。 允许将项目文件存储在装载的驱动器上,但如果将其直接存储在 \\wsl$ 驱动器上,可以获得更高的性能速度。

在 Windows 文件资源管理器中查看 WSL 目录

可以在 WSL 的 Linux 终端上输入以下命令来使用 Windows 文件资源管理器打开当前所在目录

explorer.exe .
# 或
powershell.exe /c start .

此外,还可以在 Windows 文件资源管理器的地址栏中输入 \\wsl$ ,以查看所有可用的 Linux 发行版及其根文件系统

注意事项

在跨系统访问文件的时候需要注意大小写问题,一般情况下:

  • Windows 文件系统中,文件名和目录名不区分大小写。 FOO.txt 和 foo.txt 将被视为等效文件
  • Linux 文件系统中,文件名和目录名会区分大小写。 FOO.txt 和 foo.txt 将被视为不同文件
文件系统的更多信息请查阅官网

官网链接:跨 Windows 和 Linux 文件系统工作

3.安装 Docker

目前 Windows 上不支持安装 Docker Engine,仅支持安装 Docker Desktop。安装完 WSL 以后,直接在Docker 官网上下载 Docker Desktop 的安装包,然后按提示安装即可。安装完成后,打开 Docker Desktop,即可看到以下界面,该界面包含一个左侧的侧边栏(红框区域)。看到这个侧边栏则表示 Docker Desktop 安装成功。

Docker Desktop安装成功

如果之前的 WSL 安装存在问题,可能会导致 Docker Desktop 无法正常运行,其运行界面会缺少侧边栏,如下图所示。此时表示 Docker Desktop 安装失败,需要按上述步骤重新安装 WSL

Docker Desktop安装失败

此外,还可以在 Windows 命令行或 WSL 中输入 docker run hello-world 命令测试 Docker 是否安装成功。如果出现以下输出,则表示 Docker 安装成功。

命令行提示Docker Desktop安装成功

4.WSL 使用方法补充

4.1.更新和升级包

Windows 不会自动更新或升级 Linux 发行版中的软件包,所以请使用发行版的首选包管理器定期更新和升级包。 对于 Ubuntu 或 Debian,请使用以下命令:sudo apt update && sudo apt upgrade。其中:

sudo apt update命令会更新本地数据库中的软件包列表。它会从软件源服务器上获取最新的软件包列表,并更新本地的索引文件。

sudo apt upgrade命令会检查本地数据库中的软件包列表,并升级所有已安装的软件包到最新版本。

4.2.WSL 的基本命令

WSL 的基本命令可在此处查看。

4.3.在 WSL 中进行开发所需要做的配置(按需)

4.4.WSL 详细文档

关于 WSL 的详细文档可在此处查看:WSL 文档

5.踩坑经验总结

  1. 打开 WSL 的时候提示 wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
    • 这是因为在打开 WSL 之前,已经在 Windows 下打开了梯子。但是,实测 WSL 可以通过梯子连到 Docker Hub,所以出现这个提示不用管。
  1. 运行 Docker pull 命令时出现 error response from daemon这样的网络连接错误。
    • 我刚开始以为是 问题 1 导致连不上 Docker Hub,然后就在网上查了各种各样的方法,都以失败告终。后来机缘巧合之下,在命令行中输入 docker login -u [用户名] 命令进行了一次在命令行中的登录,之后再运行 docker pull 命令就正常了。😂像是玄学一样😂。
Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐