# 第二十章 实战案例 - 操作系统

## 章节概述

本章将介绍 Docker 在不同操作系统镜像场景下的实战案例。当你构建容器化应用时，选择合适的基础镜像至关重要。不同的操作系统镜像在大小、功能和性能方面各有特点，适用于不同的使用场景。本章通过具体的案例，详细讲解如何在 Docker 中使用主流操作系统镜像，包括轻量级镜像 (Busybox、Alpine) 和完整功能镜像 (Debian、Ubuntu、CentOS 等)。

## 版本说明

本章示例中使用的操作系统镜像版本遵循以下原则：

- **Alpine、Debian、Ubuntu、CentOS** 等操作系统镜像采用大版本或次版本标签（如 `alpine:3.21`、`ubuntu:24.04`），避免使用 `latest` 标签确保构建的可再现性
- **OS 大版本保留**，以便获得最新的安全补丁和修复
- 在生产环境中，建议根据实际需求选择合适的版本，并定期更新以获得安全修复

## 为什么选择合适的操作系统镜像很重要

在容器化应用开发中，选择合适的基础操作系统镜像直接影响容器的大小、启动速度、安全性和运行性能。不同的镜像提供了不同的功能集和资源占用：

- **轻量级镜像** (Busybox、Alpine) - 镜像大小仅几 MB，启动快速，适合微服务、IoT 设备和对资源敏感的环境。Busybox 是最小的选择，集成了常见的 Unix 工具；Alpine 则提供了完整的包管理器，方便安装额外工具。
- **通用镜像** (Debian、Ubuntu) - 提供完整的 Linux 功能和丰富的软件生态，镜像大小通常在 100-300 MB 之间。适合需要灵活安装各种依赖和工具的应用场景。
- **企业级镜像** (CentOS、Fedora) - 基于 Red Hat 生态，广泛应用于企业环境和复杂系统应用。提供了 yum 包管理器和强大的系统管理工具。

选择镜像的关键原则是 “小而够用”——选择满足应用需求的最小镜像。这样可以减少安全漏洞表面积、加快镜像拉取和推送速度、降低存储成本，同时也使容器更便于分发和部署。

## 常用操作系统镜像对比

| 镜像 | 大小 | 包管理器 | 适用场景 | 优势 |
|------|------|--------|--------|------|
| **Busybox** | ~1 MB | 无 | 最小化工具集、initrd | 极致轻量，启动秒级 |
| **Alpine** | ~5 MB | apk | 微服务、静态应用 | 体积小，有包管理器 |
| **Debian** | ~100 MB | apt-get | 通用应用、开发环境 | 软件包丰富，稳定性强 |
| **Ubuntu** | ~80 MB | apt-get | 类似 Debian，现代化系统 | 更新频繁，用户多 |
| **CentOS** | ~200 MB | yum | 企业应用、兼容性需求 | 企业级支持，稳定性高 |
| **Fedora** | ~200 MB | dnf | 新特性需求、开发环境 | 最新技术栈，创新性强 |

## 学习目标

通过学习本章内容，你将能够：

- 理解不同操作系统镜像的特点、大小和适用场景
- 掌握在 Docker 中使用各类操作系统镜像的方法和最佳实践
- 学习如何根据实际需求选择合适的基础镜像，实现镜像优化
- 了解如何在不同操作系统容器中安装、配置和管理应用程序
- 掌握多阶段构建等高级技巧，最小化最终镜像大小
- 学会使用 Docker Compose 编排多个操作系统容器环境

## 章节内容导航

* [Busybox](20.1_busybox.md) — 超轻量级工具集镜像，适合嵌入式和最小化容器
* [Alpine](20.2_alpine.md) — 轻量级 Linux 镜像，广泛用于生产环境微服务
* [Debian Ubuntu](20.3_debian.md) — 功能完整的通用 Linux 镜像，生态丰富
* [CentOS Fedora](20.4_centos.md) — 企业级 Linux 镜像，适合复杂系统应用
* [本章小结](summary.md)
