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

## 章节概述

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

## 版本说明

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

* **Alpine、Debian、Ubuntu、CentOS** 等操作系统镜像采用大版本或次版本标签（如 `alpine:3.21`、`ubuntu:26.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](/docker_practice/di-si-bu-fen-shi-zhan-pian/20_cases_os/20.1_busybox.md) — 超轻量级工具集镜像，适合嵌入式和最小化容器
* [Alpine](/docker_practice/di-si-bu-fen-shi-zhan-pian/20_cases_os/20.2_alpine.md) — 轻量级 Linux 镜像，广泛用于生产环境微服务
* [Debian Ubuntu](/docker_practice/di-si-bu-fen-shi-zhan-pian/20_cases_os/20.3_debian.md) — 功能完整的通用 Linux 镜像，生态丰富
* [CentOS Fedora](/docker_practice/di-si-bu-fen-shi-zhan-pian/20_cases_os/20.4_centos.md) — 企业级 Linux 镜像，适合复杂系统应用
* [本章小结](/docker_practice/di-si-bu-fen-shi-zhan-pian/20_cases_os/summary.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/docker_practice/di-si-bu-fen-shi-zhan-pian/20_cases_os.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
