Windows 保姆级 Docker 安装教程(WSL2 版),一篇入门docker

🔥个人主页:北极的代码(欢迎来访)

🎬作者简介:java后端学习者

❄️个人专栏:苍穹外卖日记SSM框架深入JavaWeb

命运的结局尽可永在,不屈的挑战却不可须臾或缺!

前言:

大家好,我是代码不加冰,又到了痛苦的周一,上了一天的课,已经累瘫了,但宿舍开着空调,把晚自习逃了,还是挺惬意的,然后这里主要学习一下Docker,因为之前在看项目,或者在别的地方一直听过这个,但还是不知道具体是什么。

摘要:

本文介绍了 Docker 的概念、核心组件、与虚拟机的区别及实用优势,并基于 WSL2 环境,详细讲解 Windows 系统下 Docker Desktop 的完整安装步骤。

文中拆解镜像、容器、仓库三大核心概念,对比了 Docker 与虚拟机在虚拟化层级、资源占用、启动速度等方面的差异。

同时介绍 WSL2 技术作用,一步步演示环境配置、软件安装与初始化流程,搭配 hello-world 安装验证、Nginx 服务部署两大入门案例,附带常用容器管理命令与国内镜像源配置方案,帮助新手快速上手 Docker,掌握容器基础使用,为学习云原生、微服务等技术打好基础。

一、Docker 到底是什么

很多人第一次听到 Docker,会把它和虚拟机搞混,这里用最简单的话讲明白:

想象你要开发一个项目,本地电脑上能跑,放到服务器上就各种报错 ------ 环境不一致、依赖版本冲突,这些问题都能被 Docker 解决。

二、Docker 三大核心概念

Docker 的世界围绕镜像(Image)、容器(Container)、仓库(Registry) 三大核心展开,三者关系:仓库存镜像,镜像跑容器

1. 镜像(Image):只读模板,安装包
  • 定义 :镜像是只读的静态模板 ,包含运行应用所需的代码、运行时、库、配置文件、环境变量等所有依赖。
  • 特点
    • 只读:创建后不可修改,保证环境一致性;
    • 分层存储:UnionFS 技术实现,多层叠加,共享层复用,节省磁盘空间(如多个镜像共用同一个 Ubuntu 基础层);
    • 不可运行:镜像只是模板,不能直接跑程序。
  • 类比 :镜像 =食谱,固定不变,教你怎么做菜。

2. 容器(Container):运行实例,运行中的程序
  • 定义 :容器是镜像的运行实例 ,是独立隔离的进程空间,拥有独立的文件系统、网络、进程 ID。
  • 特点
    • 可读写:基于镜像的只读层,新增一层可写层,运行时产生的数据都存在这层;
    • 轻量级:共享宿主机内核,秒级启动(1-3 秒)、MB 级占用
    • 隔离性:通过 Namespace 实现进程、网络、文件系统隔离,容器间互不干扰;
    • 生命周期可控:可启动、停止、删除、暂停。
  • 类比 :容器 =按食谱做好的菜,可食用、可操作,一个食谱(镜像)可做多个菜(容器)。

3. 仓库(Registry):镜像商店,代码仓库
  • 定义 :仓库是存储和分发镜像的中心化服务,类似 GitHub 存储代码。
  • 分类
    • 公有仓库:Docker Hub(官方)、阿里云镜像仓库、腾讯云镜像仓库,提供海量免费公共镜像(如 Nginx、MySQL、Redis);
    • 私有仓库:企业内部搭建(如 Harbor、Nexus),存储私有业务镜像,保障数据安全。
  • 核心操作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(如 VMware、VirtualBox)模拟 CPU、内存、硬盘等硬件,每个虚拟机都要安装独立的 Guest OS(如 Windows、Linux),资源开销大。
  • Docker :基于 Linux 内核三大核心技术,共享宿主机内核 ,无需额外 OS:
    1. Namespace(命名空间):实现资源隔离,为容器创建独立的进程、网络、文件系统、主机名、用户空间;
    2. CGroup(控制组):限制容器资源使用(CPU、内存、磁盘 IO、网络带宽),避免单个容器占用全部资源;
    3. UnionFS(联合文件系统):实现镜像分层存储,多层只读层叠加,新增可写层,高效复用和分发。

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


为什么选 Docker

  • 环境一致:从开发、测试到生产,镜像包含所有依赖,杜绝 "在我电脑能跑" 的问题。
  • 轻量高效:共享宿主机内核,秒级启动,资源占用极低,一台服务器可跑上千个容器。
  • 可移植性强:一次构建,随处运行,不受底层系统影响。
  • 快速部署:一行命令就能部署 Nginx、MySQL 等服务,扩容也只需复制容器。

三、安装前准备:开启 WSL2

Docker Desktop 在 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. 开启虚拟化
  1. 重启电脑,进入 BIOS(不同品牌按键不同,常见 F2、F10、Del)
  2. 找到 Virtualization Technology(VT-x/AMD-V)选项,设为 Enabled
  3. 保存并重启

Ctrl+Shift+Esc → 性能 → CPU → 右下角 "虚拟化" 显示已启用即可。


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. 安装过程
  1. 双击运行 Docker Desktop Installer.exe
  2. 安装配置界面:
    • 选择 All-users installation(推荐,稳定无限制)
    • 勾选 Add shortcut to desktop(方便后续打开)
    • 务必勾选 Use WSL 2 instead of Hyper-V
  1. 点击 OK,等待安装完成
  2. 安装结束后,点击 Close and log out,系统会注销当前用户,重新登录即可。

3. 首次启动配置
  1. 双击桌面 Docker 图标,启动程序
  2. 首次启动会弹出服务协议,点击 Accept
  3. 登录界面选择 Continue without signing in(个人开发无需注册账号)
  4. 等待右下角鲸鱼图标变为绿色,或左下角显示 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.

若第一次没成功,问题不大,自动从网上拉取镜像(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. 容器基础管理命令

powershell

复制代码
# 查看运行中的容器
docker ps

# 停止容器
docker stop my-nginx

# 启动容器
docker start my-nginx

# 删除容器(需先停止)
docker rm my-nginx

# 删除镜像
docker rmi nginx

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

国内网络访问 Docker Hub 较慢,配置镜像源可大幅提升拉取速度。

  1. 打开 Docker Desktop → 右上角 (Settings)→ Docker Engine

  2. 将配置替换为以下内容:

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

  3. 点击 Apply & Restart,等待 Docker 重启生效。


八、总结

到这里,已经完成了 Docker 的安装、验证和入门实战,现在我们可以:

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

Docker 的核心优势就是 "一次构建,随处运行",接下来你可以尝试部署自己的项目到容器中,感受它带来的便捷性。

结语:

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

相关推荐
lbb 小魔仙1 小时前
Docker一键部署 EasyNode 面板,随时随地可视化管理服务器
服务器·docker·容器
能摆一天是一天1 小时前
windows docker 部署openfire
运维·docker·容器
玖釉-1 小时前
LeetCode Hot 100 知识点总结与算法指南
c++·windows·算法·leetcode
stanleyrain1 小时前
linux上无感操作Windows上的文件夹
linux·运维·windows
IT策士1 小时前
第33篇 k8s 之 敏感信息管理:Secret 与安全实践
安全·容器·kubernetes
“码”力全开2 小时前
架构师深改:基于 Docker 与边缘计算的百路 AI 视频高并发中台架构 —— 解耦 GB28181/RTSP 异构协议,支持全套源码交付
人工智能·docker·边缘计算
IT策士2 小时前
第30篇 k8s之Ingress 基础:域名路由与 Ingress Controller
云原生·容器·kubernetes
一个人旅程~3 小时前
MacBook Pro安装Win11 IoT LTSC 2024的两种方法操作说明
windows·经验分享·macos·电脑
阿昭L4 小时前
Lab 3-1
windows·安全·逆向工程·恶意代码分析