Docker 从 0 到 1 再到 Kubernetes 实战:第一篇 为什么要从 Docker 学到 Kubernetes?系列导读与环境准备
2026/5/27 22:54:17 网站建设 项目流程

IT策士 10余年一线大厂经验,专注 IT 思维、架构、职场进阶。我会在各个平台持续发布最新文章,助你少走弯路。


一、为什么要学 Docker + Kubernetes?

1.1 市场数据

  • 2025 年全球 Docker 容器市场规模:61.2 亿美元

  • 预计 2031 年市场规模:192.6 亿美元

  • 年复合增长率 (CAGR):21.05%

  • IT 和电信行业市场份额:41.05%

  • 医疗健康行业年复合增长率:28.23%

  • 2025 年企业容器技术市场估值:113.3 亿美元

  • 预计 2032 年市场估值:234.3 亿美元

  • 生产环境使用 Kubernetes 的组织比例 (CNCF 2025):82%(较 2024 年的 80% 继续增长)

核心趋势:容器化已从"可选项"变为"默认方式"。超过 80% 的企业已将容器嵌入持续集成管道,部署频率翻倍的同时,回滚事故减少 60%。

1.2 三层递进学习路线

第一层:Docker 容器化——让应用"一次构建,处处运行"

  • 传统部署是把应用"装"到操作系统上,环境差异会制造无数诡异问题

  • Docker 将应用程序及其依赖打包到轻量级、可移植的容器中

  • 利用 Linux 内核的 cgroups 和 namespaces 机制实现进程级隔离

  • 与虚拟机相比:

    • 容器镜像通常只有 MB 级别(虚拟机动辄 GB)

    • 启动只需秒级而非分钟级

    • 性能开销接近原生

  • 容器共享宿主机内核,一台物理机可以承载数倍于虚拟机的应用实例

  • 使用 Docker 可以将服务器资源利用率从 10-15% 提升至 60-80%

第二层:Docker Compose 编排——在单机上轻松管理多组件应用

  • 一个容器好管,十个靠脚本还能应付

  • 但当应用拆成 Web 服务、Redis 缓存、MySQL 数据库等多个组件时,手动管理启动顺序、网络连接和数据卷就是一场噩梦

  • Docker Compose 用一条 YAML 声明把所有服务的关系写清楚

  • 一条命令docker compose up就启动整个应用栈

  • 能力边界是单机,但概念(服务、网络、卷、声明式配置)正是理解 Kubernetes 的最佳跳板

第三层:Kubernetes 集群编排——为大规模、高可用生产环境而生

  • Compose 只能在单机上编排

  • 生产环境需要跨多台机器:

    • 自动调度

    • 故障自愈

    • 水平伸缩

    • 滚动更新

    • 服务发现

  • Kubernetes 历经三阶段演进:

    1. 存活期:确保容器能调度和运行

    2. 规模期:集群扩展至数千节点

    3. 智能化期(2025 年进入):应对 AI 工作负载的 GPU 拓扑感知调度等复杂场景

设计逻辑:先扎实掌握容器(Docker)→ 再理解单机编排(Compose)→ 最后深入 Kubernetes 核心及生产生态。每一步都不跳跃,每一步都有可以动手操作的示例。


二、全系列 50 篇结构总览

四个阶段

第一部分:Docker 容器化基础(第 1~10 篇)

  • 从安装 Docker 环境、跑第一个容器开始

  • 循序渐进地拆解镜像的分层结构

  • 编写 Dockerfile

  • 掌握数据卷与网络的配置

  • 第 10 篇:承上启下的实战——将 Flask + Redis 计数器应用完整容器化,构建镜像并推送到 Docker Hub

  • 这个应用也将是整个系列的贯穿案例,足够简单,又足够典型,能覆盖绝大多数 K8s 场景

第二部分:Docker Compose 编排(第 11~18 篇)

  • 从 Compose 的核心概念出发

  • 学习如何用 YAML 声明式管理多服务

  • 深入理解环境变量、健康检查与服务依赖

  • 第 16 篇:以 WordPress + MySQL 为例实战编排

  • 第 18 篇:把 Compose 中的概念(服务、网络、卷)与 Kubernetes 的对应对象(Service、Pod、ConfigMap)进行映射对照,帮你在思维上完成第一次跃迁

第三部分:Kubernetes 核心(第 19~38 篇)

  • 全系列中最扎实的一段

  • 逐步掌握核心对象:

    • Pod

    • Deployment

    • Service

    • Ingress

    • ConfigMap

    • Secret

    • PV/PVC

    • 调度策略

    • RBAC

  • 搭建本地集群

  • 动手把 Flask + Redis 应用迁移到 K8s 上

  • 实现滚动更新和自动伸缩

  • 每一篇都有可执行的命令和 YAML 清单,可以边看边敲,边敲边理解

第四部分:Kubernetes 生态与实战(第 39~50 篇)

  • 进入生产级运维的世界:

    • Helm 包管理

    • Prometheus + Grafana 监控

    • EFK/Loki 日志采集

    • NetworkPolicy 网络策略

    • GitOps(ArgoCD)

    • Istio 服务网格

    • 排错实战指南

  • 第 50 篇:全程回顾和端到端演示——从docker build到 K8s 集群上 HPA 自动伸缩、滚动更新,再到 Grafana 仪表板上的监控指标,一条命令一条命令地走一遍

关键实战节点

  • 第 10 篇:Flask + Redis 计数器应用容器化 → 推送到 Docker Hub(贯穿案例起点)

  • 第 16 篇:WordPress + MySQL Compose 编排实战

  • 第 18 篇:Compose 概念与 K8s 对象映射对照

  • 第 44-45 篇:贯穿案例迁移到 K8s 集群

  • 第 50 篇:端到端完整演示(docker build → HPA 自动伸缩 → Grafana 监控)


三、实验环境搭建

3.1 安装方式选择

  • Windows / macOS 用户:推荐安装Docker Desktop

    • 自带 Docker Engine、Docker Compose

    • 可一键启用的 Kubernetes 集群

    • 是学习全部三个阶段的最佳环境

  • Linux 桌面用户(如 Ubuntu Desktop):推荐安装Docker Desktop for Linux

    • 获得与 Windows/macOS 一致的集成体验
  • Linux 服务器用户(如 Ubuntu Server):安装Docker Engine(社区版 CE)

    • Docker 在 Linux 上的核心运行时

3.2 Windows 用户:安装 Docker Desktop

系统要求

  • Windows 10 64 位专业版/企业版/教育版(版本 2004 或更高)或 Windows 11

  • 启用 WSL 2(Windows Subsystem for Linux)

  • 至少 4GB 内存,推荐 8GB 以上

安装步骤

  1. 前往 Docker 官网下载页面下载稳定版安装包:https://www.docker.com/products/docker-desktop/

  2. 下载完成后,双击Docker Desktop Installer.exe运行安装程序

  3. 接受许可协议

  4. 确保勾选“Use WSL 2 instead of Hyper-V”(推荐选项)

  5. 点击 Install,等待安装完成并重启电脑

  6. 安装完成后,Docker Desktop 会自动启动(系统托盘可见 Docker 图标)

验证安装

打开终端(PowerShell 或 Windows Terminal),输入:

预期输出包含 Client 和 Server 两段信息,版本号显示正常且无报错即表示成功。

确认 WSL 2 配置

如果输出中显示有 Docker 相关的发行版且版本号为 2,说明配置正确。

国内用户:配置镜像加速(阿里云)

由于网络原因,国内用户直接从 Docker Hub 拉取镜像可能较慢。配置步骤:

  1. 右键点击系统托盘中的 Docker 图标 → Settings

  2. 进入 Docker Engine 选项卡

  3. 在 JSON 配置中添加registry-mirrors字段:

{"registry-mirrors":["https://<<your-id>.mirror.aliyuncs.com"]}
  1. 点击 Apply & Restart 使配置生效

说明:<your-id>需替换为你自己的阿里云容器镜像服务的专属加速地址。可登录阿里云控制台,在"容器镜像服务 ACR"中免费获取。如果暂时没有阿里云账号,也可以使用 Docker Hub 官方源,初次使用时拉取速度可能会慢一些,但不会影响学习。

3.3 macOS 用户:安装 Docker Desktop

系统要求

  • macOS 11 (Big Sur) 或更高版本

  • Apple Silicon (M1/M2/M3/M4) 或 Intel 芯片

安装步骤

  1. 前往 Docker 官网下载页面:https://www.docker.com/products/docker-desktop/

  2. 根据芯片类型选择对应版本:

    • Apple Silicon 版本(M 系列芯片)

    • Intel Chip 版本(旧款 Mac)

  3. 下载完成后,双击Docker.dmg文件

  4. 在弹出的窗口中将 Docker 图标拖拽到 Applications(应用程序)文件夹

  5. 打开 Launchpad,找到 Docker 图标并点击启动

  6. 首次启动时需要授权系统权限,按提示操作即可

  7. 系统菜单栏出现 Docker 鲸鱼图标后,打开终端(Terminal),输入:

如果 Client 和 Server 两段信息都显示正常,说明安装成功。

3.4 Linux 用户:安装 Docker Engine

Linux 下的安装方式更加灵活,可选择安装 Docker Desktop 或直接安装 Docker Engine。

方式一:Docker Desktop for Linux(Ubuntu Desktop 推荐)

  • 从官网下载.deb.rpm包后用包管理器安装

  • 安装完成后从应用菜单启动 Docker Desktop

  • 体验与 Windows/macOS 版一致

方式二:Docker Engine(服务器环境推荐)

如果你使用的是 Linux 服务器(无图形界面),安装 Docker Engine(社区版 CE)是更好的选择。下面以 Ubuntu 为例,提供两种安装方式。也可直接访问 Docker 官方文档选择适合你发行版的安装步骤:https://docs.docker.com/engine/install/

方法 A:使用 Docker 官方便捷脚本(最简单)

对于学习环境,Docker 官方提供了一键安装脚本,只需一条命令:

curl-fsSLhttps://get.docker.com|sudobash

这条命令会自动检测你的 Linux 发行版和架构,添加官方仓库并安装最新版 Docker Engine。

如果希望先审查脚本内容再执行,可以分两步操作:

curl-fsSLhttps://get.docker.com-oget-docker.shsudoshget-docker.sh

脚本执行完成后,启动 Docker 服务:

sudosystemctl startdockersudosystemctlenabledocker# 设置为开机自启

方法 B:手动添加官方仓库安装(更可控)

如果希望安装特定版本,或者更清楚地了解每一步在做什么,可按以下步骤手动安装:

# 1. 卸载旧版本(如果存在)sudoapt-getremovedockerdocker-engine docker.io containerd runc# 2. 安装依赖包sudoapt-getupdatesudoapt-getinstallca-certificatescurlgnupg lsb-release-y# 3. 添加 Docker 官方 GPG 密钥sudoinstall-m0755-d/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgsudochmoda+r /etc/apt/keyrings/docker.gpg# 4. 添加 Docker 官方 APT 仓库echo"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null# 5. 安装 Docker Enginesudoapt-getupdatesudoapt-getinstalldocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin-y

安装完成后,将当前用户加入 docker 用户组,避免每次都要加 sudo:

sudousermod-aGdocker$USERnewgrpdocker

说明:usermod -aG将当前用户追加到 docker 组,newgrp docker让权限在当前会话中立即生效,无需重新登录。如果不执行newgrp,需要退出当前终端会话再重新登录才能生效。

然后验证安装:

3.5 第一步:运行冒烟测试

无论你用的是哪个操作系统,安装完成后都来跑一个经典的"冒烟测试"——这个步骤很简单,但意义重大,它能一次性验证 Docker 引擎正常、网络通畅、镜像拉取和容器启动全链路都没问题:

这条命令会依次完成:

  1. 从 Docker Hub 拉取 hello-world 镜像

  2. 基于该镜像创建一个新容器

  3. 容器运行并打印欢迎消息

  4. 容器退出

预期输出

Unable tofindimage'hello-world:latest'locally latest: Pulling from library/hello-world c1ec31eb5944: Pull complete Digest: sha256:1408fec50309afee38f3535383f5b09419e6dc0925bc69891e79d84cc4cdcec6 Status: Downloaded newer imageforhello-world:latest Hello from Docker!This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the"hello-world"image from the Docker Hub.3. The Docker daemon created a new container from that imagewhichruns the executable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client,whichsent it to your terminal.

这几行输出展示了 Docker 运行容器的完整底层流程——客户端与守护进程通信、从仓库拉取镜像、基于镜像创建容器、把输出流回终端。看到“Hello from Docker!”的欢迎信息,你的 Docker 环境就已完全就绪。

3.6 准备编辑器

除了 Docker 本身,你还应该准备一个趁手的编辑器。整个系列中你会频繁编写 Dockerfile、docker-compose.yml 和各种 Kubernetes YAML 清单文件。

推荐 VS Code,搭配以下两个插件

  • Docker 官方插件(Microsoft 出品)

    • 提供 Dockerfile 和 Compose 文件的语法高亮

    • 智能提示

    • 镜像管理功能

  • Kubernetes 官方插件(Microsoft 出品)

    • 提供 K8s YAML 清单的智能补全

    • 语法校验

    • 集群资源浏览器

这两个插件能让你的编写效率翻倍,尤其是在写 K8s YAML 时,字段级别的自动补全非常实用。

3.7 关于 Kubernetes 环境的说明

  • 前 18 篇只需要 Docker 环境

  • 从第 19 篇开始,我们将进入 Kubernetes 的世界

  • 届时会专门有一篇详细讲解 Minikube 本地集群的搭建

  • 你不必现在就操心 K8s 环境


四、三个建议,帮你把这 50 篇真正学进去

1. 尽量别跳篇

  • 哪怕有些 Docker 基础你已经有,也建议至少快速浏览一遍前 10 篇

  • 原因很简单——Kubernetes 中很多设计思想(分层镜像、标签选择器、声明式配置、探针机制)都源于容器原理

  • 理解了"为什么这样设计",比记住命令重要十倍

  • 前 18 篇的每一步积累,都会在第 19 篇之后成为你理解 K8s 的"脚手架"

2. 一定要动手敲命令

  • 看一百遍不如亲手敲一遍,肌肉记忆对运维类技能至关重要

  • 这个系列里每一个命令、每一份 YAML 清单,你都应该在你自己的电脑上逐行敲一遍、跑一遍

  • 遇到报错也别怕——排错过程本身就是最扎实的学习

  • 如果卡住了,欢迎随时在评论区留言,我会结合大家的问题持续补充和迭代这个系列的内容

3. 把贯穿案例当成自己的项目

  • 整个系列围绕一个 Flask + Redis 计数器应用展开

  • 它不是"别人给你准备好的示例",而是你应该在每一篇里亲手构建的项目

  • 从第 10 篇写好 Dockerfile,到第 44-45 篇部署到 K8s 集群,再到第 50 篇加上监控和自动伸缩

  • 完成比完美更重要,先让它跑起来,再逐步打磨

  • 当你亲眼看到这个应用从本地一个docker run命令,变成 K8s 集群上自动伸缩、零停机更新的生产级服务时,那种掌控感会让你对后续的学习充满信心


五、从下一篇开始,正式踏入容器的世界

到这篇文章为止,你已经搞清楚了:

  • 为什么要学这条路线?

    • 容器化是行业趋势,Kubernetes 是容器编排的事实标准,两者结合是云原生时代的必备技能
  • 这 50 篇会怎么带你学?

    • 四大阶段,从 Docker 基础到 K8s 生产级运维,每一步都有动手实践
  • 贯穿案例是什么?

    • Flask + Redis 计数器应用,它将伴随你走完整个系列
  • 实验环境怎么搭?

    • 现在你的电脑上已经有一个完整的 Docker 环境了

下一篇文章预告

第 2 篇:Docker 初体验:运行你的第一个容器

我将带你亲手启动 Nginx 和 Redis 容器,感受容器的秒级启动与进程级隔离。同时,我们也会正式开始深入镜像、容器和仓库这三大核心概念。

想了解更多还可以去各个平台搜索「IT策士」,一起升级 IT 思维!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询