对于开发者来说,环境不一致导致的“在我电脑能跑”问题,常常让人抓狂。Docker 正是解决这一痛点的利器。本文将以 WSL2 为后端,手把手教你如何在 Windows 系统上安装 Docker,并带你跑通第一个容器,为后续学习 Kubernetes容器编排 等高级技能打下坚实基础。

Docker 究竟是什么?为什么需要它?

很多人初听 Docker,容易把它和虚拟机混淆。简单来说,Docker 是一个轻量级的容器化平台,它允许你将应用及其所有依赖打包成一个标准化的单元——容器。无论你在本地开发、测试,还是部署到生产环境,这个容器都能保证一致的行为。

Docker 的核心优势包括:

  • 环境一致性:杜绝“在我电脑能跑,到你那就报错”的尴尬。
  • 轻量高效:共享宿主机内核,秒级启动,资源占用极低。
  • 可移植性:一次构建,随处运行,不受底层操作系统影响。
  • 快速部署:一条命令即可部署 Nginx、MySQL 等服务,扩容也只需复制容器。

可以说,Docker 是现代 容器化部署K8s 生态的基石。

Docker 三大核心概念

理解 Docker,需要掌握三个核心概念:镜像(Image)容器(Container)仓库(Registry)。它们的关系可以概括为:仓库存镜像,镜像跑容器。

1. 镜像(Image)—— 只读模板

镜像是 只读的静态模板,包含了运行应用所需的代码、运行时、库、配置文件等所有依赖。它采用分层存储(UnionFS)技术,多个镜像可以共享同一基础层,从而节省磁盘空间。镜像本身不可运行,它只是一个“食谱”。

2. 容器(Container)—— 运行实例

容器是镜像的 运行实例,是一个独立隔离的进程空间。它拥有自己的文件系统、网络和进程 ID。容器基于镜像的只读层,新增一层可写层,运行时产生的数据都保存在这里。容器是轻量级的,启动只需 1-3 秒,且通过 Namespace 实现隔离,互不干扰。

3. 仓库(Registry)—— 镜像商店

仓库是 存储和分发镜像的中心化服务,类似 GitHub 但用于存储 Docker 镜像。常见的有 Docker Hub(官方)、阿里云镜像仓库等。核心操作包括 docker pull(拉取镜像)和 docker push(推送镜像)。

4. 补充:Dockerfile(镜像构建脚本)

Dockerfile 是一个文本文件,用固定指令(如 FROM、RUN、COPY)定义镜像的构建步骤。它实现了镜像构建的 代码化,可版本控制、可复用,一键构建,避免手动配置环境出错。简单示例如下:

# 基础镜像(FROM指定)
FROM ubuntu:22.04
# 安装依赖(RUN执行命令)
RUN apt-get update && apt-get install -y nginx
# 复制本地文件到镜像(COPY复制文件)
COPY index.html /var/www/html/
# 暴露端口(EXPOSE声明端口)
EXPOSE 80
# 启动命令(CMD容器启动后执行)
CMD ["nginx", "-g", "daemon off;"]

Docker vs 虚拟机:核心差异

很多人分不清 Docker 和虚拟机,一句话总结:虚拟机是“完整房子”,Docker 是“共享公寓”。核心差异在于虚拟化层级、资源占用和隔离性。

对比维度Docker 容器虚拟机(VM)
虚拟化层级操作系统级虚拟化(共享宿主机内核)硬件级虚拟化(独立内核 + 完整 OS)
启动速度秒级(1-3 秒)分钟级(3-5 分钟)
资源占用极低(MB 级,共享内核)极高(GB 级,每个 VM 独占 CPU / 内存)
磁盘大小镜像 MB 级,容器无额外开销完整 OS 镜像 GB 级(如 Windows 10 约 20GB)
隔离性进程级隔离(共享内核,隔离较弱)硬件级隔离(完全独立,隔离极强)
性能损耗几乎无(直接调用宿主机内核)高(需模拟硬件 + 运行完整 OS)
适用场景微服务、CI/CD、云原生、轻量应用多系统共存、高安全隔离、遗留系统

底层原理差异

  • 虚拟机:通过 Hypervisor 模拟硬件,每个虚拟机都需安装独立的 Guest OS,资源开销大。
  • Docker:基于 Linux 内核的 Namespace(资源隔离)、CGroup(资源限制)和 UnionFS(分层文件系统),共享宿主机内核,无需额外 OS。

Docker 不是虚拟机的替代品,而是互补品:虚拟机适合强隔离、多系统场景;Docker 适合轻量、高效、云原生场景。

⚙️ 安装前准备:启用 WSL2

Windows 上推荐使用 WSL2 后端,性能更好,支持家庭版系统。

WSL(Windows Subsystem for Linux),即适用于 Linux 的 Windows 子系统,是微软推出的原生技术,允许 Windows 系统直接运行 Linux 程序,无需额外安装虚拟机或划分双系统分区。

我们本次安装使用的 WSL2 是第二代版本,搭载了完整的 Linux 内核,在运行性能、网络兼容性、文件读写能力上远优于第一代 WSL,也是目前 Windows 平台运行 Docker 的标准推荐方案


 Docker 为什么依赖 WSL2

Docker 原本诞生于 Linux 系统,底层依赖 Linux 内核的命名空间、控制组等隔离技术。 Windows 本身内核不支持 Docker 原生运行,所以提供了两种兼容方案:

  1. Hyper-V 虚拟机:老旧方案,资源占用高,Windows 家庭版还不支持;
  2. WSL2:轻量、高效、全版本兼容(Win10/Win11 家庭版、专业版都能用),也是本文采用的安装方式。

Docker Desktop 借助 WSL2 作为底层运行环境,把容器运行在 WSL2 内部,Windows 端只做交互与管理,兼顾了易用性和性能

1. 检查系统要求

  • Windows 10 2004+ 或 Windows 11
  • 内存 ≥ 4GB(推荐 8GB+)
  • CPU 支持并开启虚拟化(Intel VT-x / AMD-V)

2. 开启虚拟化

重启电脑进入 BIOS,找到 Virtualization Technology 选项,设为 Enabled。保存重启后,通过任务管理器确认虚拟化已启用。

3. 启用 WSL2 功能

管理员身份 打开 PowerShell,执行以下命令:

# 启用 WSL 子系统
dism /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 设置 WSL 默认版本为 2
wsl --set-default-version 2

⚠️ 执行完成后,必须重启电脑,否则 WSL2 无法生效。

安装 Docker Desktop

1. 下载安装包

前往 Docker 官网下载 Windows 版安装包,选择 Download for Windows - AMD64(适用于绝大多数电脑)。

2. 安装过程

双击运行安装包,在配置界面:

  • 选择 All-users installation(推荐,稳定无限制)
  • 勾选 Add shortcut to desktop(方便后续快速启动)
  • 务必勾选Use WSL 2 instead of Hyper-V

点击 OK 等待安装完成,然后点击 Close and log out 注销并重新登录。

3. 首次启动配置

双击桌面 Docker 图标启动程序。首次启动会弹出服务协议,点击 Accept。登录界面选择 Continue without signing in(个人开发无需注册账号)。等待右下角鲸鱼图标变为绿色,或左下角显示 Engine running,即表示 Docker 服务就绪。

✅ 验证安装:跑通第一个容器

打开 PowerShell,执行以下命令:

# 查看 Docker 版本
docker --version
# 运行 hello-world 测试容器
docker run hello-world

若看到以下输出,说明安装完全成功:

Hello from Docker!
This message shows that your installation appears to be working correctly.

如果第一次失败,Docker 会自动拉取镜像(Pulling),再运行一次即可。

入门案例:部署 Nginx 网页服务

我们来跑一个 Nginx 容器,体验 Docker 的便捷部署能力。

1. 拉取 Nginx 镜像

docker pull nginx

Docker 会自动从 Docker Hub 下载最新版 Nginx 镜像。

2. 运行 Nginx 容器

docker run -d -p 80:80 --name my-nginx nginx

参数说明:

  • -d:后台运行容器
  • -p 宿主机端口:容器端口:将宿主机 80 端口映射到容器的 80 端口
  • --name:给容器命名

3. 访问 Nginx 服务

打开浏览器,访问 http://localhost,看到 Nginx 欢迎页即部署成功!

4. 容器基础管理命令

# 查看运行中的容器
docker ps
# 停止容器
docker stop my-nginx
# 启动容器
docker start my-nginx
# 删除容器(需先停止)
docker rm my-nginx
# 删除镜像
docker rmi nginx

进阶优化:配置国内镜像源(必做)

国内网络访问 Docker Hub 较慢,配置镜像源可大幅提升拉取速度。打开 Docker Desktop → 右上角设置 → Docker Engine,将配置替换为以下内容:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run"
  ]
}

点击 Apply & Restart 并等待 Docker 重启生效。

[AFFILIATE_SLOT_1]

总结与下一步

至此,你已完成了 Docker 的安装、验证和入门实战。现在你可以:

  • 拉取并运行公共镜像(如 MySQL、Redis)
  • 体验容器的部署、启停、删除等基础操作
  • 为后续学习 Kubernetes容器编排CI/CD 打下基础

Docker 的核心优势就是“一次构建,随处运行”。接下来,你可以尝试将自己的项目打包成镜像并部署到容器中,感受容器化带来的高效与便捷。

[AFFILIATE_SLOT_2]

如果对你有帮助,请点赞、关注、收藏,你的支持就是我最大的动力!