找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2582

积分

0

好友

357

主题
发表于 4 天前 | 查看: 19| 回复: 0

许多开发者希望在自己的 Windows 11 家庭版电脑上运行 Docker,但常常发现官方 Docker Desktop 无法直接安装。常见的解决方案要么建议升级到专业版,要么推荐使用传统的虚拟机软件,再在其中安装 Docker。

其实,我们还有一个更直接、性能更好的选择:利用 Windows 内置的 WSL(适用于 Linux 的 Windows 子系统)。通过它,我们可以在一个完整的 Linux 环境中直接安装和使用 Docker,并且能获得接近原生 Linux 的硬件性能。下面就来详细介绍如何一步步实现。

一、WSL的安装与准备

WSL 的安装需要启用三个 Windows 功能组件。请注意,根据后续版本的使用经验,Hyper-V 组件可能不是必需的,但为了确保兼容性,我们建议一并勾选。

所需组件如下:

  • Hyper-V
  • 适用于 Linux 的 Windows 子系统
  • 虚拟机平台

第一步:启用Windows功能

按下 Win + S 组合键打开搜索栏,输入“启用或关闭 Windows 功能”并打开它。

在Windows搜索中查找启用或关闭Windows功能

在弹出的窗口中,找到并勾选以下三个功能:

  • Hyper-V
  • 适用于 Linux 的 Windows 子系统
  • 虚拟机平台

Windows功能列表,已勾选Hyper-V等功能
Windows功能列表,已勾选适用于Linux的Windows子系统和虚拟机平台

点击“确定”按钮,系统将开始安装所选功能。

Windows功能正在搜索所需文件

安装完成后,系统会提示需要重启电脑以完成更改。

Windows提示需要重启以完成功能更改

第二步:更新WSL

重启后,WSL 的核心组件就安装好了。此时,我们可以打开 PowerShell 或终端,运行以下命令来更新 WSL 到最新版本:

wsl --update

如果一切顺利,你将看到类似“正在安装:适用于 Linux 的 Windows 子系统”的进度提示。

不过,很多用户在初次安装 Linux 发行版时可能会遇到网络问题,报错如下:

PS C:\Windows\system32> wsl --install
适用于 Linux 的 Windows 子系统已安装。
无法解析服务器的名称或地址

这个错误通常是因为 DNS 解析问题,无法访问 raw.githubusercontent.com 这个域名导致的。

二、配置hosts文件以解决网络问题

出现“无法解析服务器的名称或地址”错误,意味着系统无法解析到 GitHub 的域名。我们需要手动配置 hosts 文件来绕过这个问题。

首先,访问 https://site.ip138.com/raw.githubusercontent.com/ 这类 IP 查询网站,查找 raw.githubusercontent.com 当前可用的 IP 地址。

查询 raw.githubusercontent.com 域名的可用IP地址

通常,我们会看到一些标记为“泛播 GitHub”的 IP,例如 185.199.110.133。记下其中一个。

修改hosts文件权限(如果需要)

在 Windows 上直接修改 C:\Windows\System32\drivers\etc\hosts 文件时,可能会因为权限不足而保存失败。这时,我们需要修改该文件的权限。

  1. 右键点击 hosts 文件 -> 属性 -> 安全选项卡。
  2. 在“组或用户名”列表中,找到并选中 Users (你的主机名\Users)
  3. 点击“编辑”按钮。
  4. 在新窗口中,再次选中 Users (你的主机名\Users)
  5. 在下方的权限列表中,勾选“完全控制”和“写入”后面的“允许”复选框。
  6. 点击“确定”,系统可能会弹出安全警告,选择“”即可。

hosts文件默认安全权限设置
编辑hosts文件权限,为Users组添加完全控制和写入权限
Windows安全中心关于修改系统文件夹权限的警告
修改完成后,Users组对hosts文件拥有完全控制等权限

添加IP映射

用记事本(以管理员身份运行)打开 hosts 文件,在文件末尾添加一行,将查询到的 IP 映射到域名,然后保存。

185.199.110.133 raw.githubusercontent.com

在hosts文件中添加 raw.githubusercontent.com 的IP映射

三、更新并验证WSL

hosts 文件配置完成后,重新打开 PowerShell,再次运行更新命令:

wsl --update

这次应该能够顺利更新。更新完成后,可以通过以下命令查看 WSL 的详细版本信息,确认安装成功。

wsl --version

四、安装Linux发行版(以Ubuntu为例)

WSL 本身是一个平台,我们还需要在上面安装一个具体的 Linux 发行版。首先,查看可在线安装的发行版列表:

wsl --list --online

你会看到一个包含 Ubuntu、Debian、Kali 等多种发行版的列表。这里我们选择安装最新的 Ubuntu 24.04 LTS

使用以下命令进行安装(NAME 为上面列表中的第一列名称):

wsl --install Ubuntu-24.04

安装过程会自动下载系统映像并初始化。根据提示,你需要为这个 Linux 子系统创建一个 UNIX 用户名密码(这个密码用于 Linux 内部的 sudo 操作,与 Windows 密码无关)。

安装完成后,你会直接进入 Ubuntu 的命令行环境,提示符为 用户名@Windows主机名,这代表你已经成功进入 WSL 的 Linux 子系统。

五、在WSL子系统中安装Docker

如何进入已安装的子系统?

安装完成后,你可以在 Windows 终端(推荐)或 PowerShell 中轻松进入子系统。

  1. 打开 Windows 终端
  2. 点击标签页旁边的下拉箭头。
  3. 在下拉菜单中,你会看到已安装的子系统名称(如“Ubuntu-24.04”),点击即可进入对应的 Linux 环境。

Windows终端下拉菜单中显示已安装的Ubuntu子系统

安装 Docker

在 Ubuntu 子系统的命令行中,直接使用 apt 包管理器安装 Docker。需要注意的是,在 Debian/Ubuntu 的官方仓库中,docker 这个包名指向另一个不同的软件,我们需要的 Docker CE 包名是 docker.io

运行以下命令:

sudo apt update
sudo apt install docker.io

安装完成后,运行 docker version 命令来验证安装是否成功。

六、配置Docker以便使用

1. 免sudo执行Docker命令

默认情况下,运行 Docker 命令需要 sudo 权限。为了方便,我们可以将当前用户加入 docker 用户组:

sudo usermod -aG docker $USER
newgrp docker

执行后,当前终端会话就可以直接运行 docker 命令而无需 sudo 了。新开的终端可能需要重新登录用户。

2. 配置镜像加速器

为了提升拉取镜像的速度,可以配置国内的镜像加速器。编辑 /etc/docker/daemon.json 文件(如果不存在则创建):

sudo nano /etc/docker/daemon.json

在文件中添加如下内容(以 DaoCloud 镜像为例,你可以替换为其他可用镜像源):

{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}

daemon.json文件内容示例,配置了镜像加速器

保存退出后,重启 Docker 服务使配置生效:

sudo systemctl restart docker

3. 设置Docker开机自启

为了让 WSL 启动时 Docker 服务自动运行,执行:

sudo systemctl enable docker

七、拉取镜像并运行容器测试

至此,所有配置都已完成。让我们拉取一个小巧的 alpine 镜像来测试 Docker 是否工作正常。

docker pull alpine

拉取成功后,使用 docker images 查看本地镜像列表。

现在,用这个镜像创建一个简单的容器,执行一条命令:

docker run -it --name hello alpine:latest echo "hello world"

命令执行后会输出“hello world”。使用 docker ps -a 可以查看所有容器(包括已退出的),应该能看到刚刚创建的名为 hello 的容器。

如果以上所有步骤都能顺利完成,那么恭喜你!你已经成功在 Windows 11 家庭版上,通过 WSL 建立了一个功能完整的 Docker 环境,可以畅享容器化开发带来的便利了。这个方法不仅避免了升级系统版本的麻烦,其性能也远超传统虚拟机方案,是家庭版用户体验 Docker 和 云原生 容器化生态的绝佳途径。如果你在配置过程中遇到其他系统环境问题,也可以到 云栈社区运维/DevOps/SRE 板块与更多开发者交流探讨。




上一篇:Ubuntu系统使用Perlbrew安装管理多版本Perl教程
下一篇:Python实战脚本宝库:GeekComputers-Python覆盖文件处理、网络爬虫与自动化
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 02:48 , Processed in 0.466524 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表