> For the complete documentation index, see [llms.txt](https://philipzheng.gitbook.io/docker_practice/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://philipzheng.gitbook.io/docker_practice/cases_os.md).

# 實戰案例：作業系統

## 章節概述

本章將介紹 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 功能和豐富的軟體生態，映像檔大小通常在 80-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/cases_os/busybox.md) — 超輕量級工具集映像檔，適合嵌入式和最小化容器
* [Alpine](/docker_practice/cases_os/alpine.md) — 輕量級 Linux 映像檔，廣泛用於生產環境微服務
* [Debian Ubuntu](/docker_practice/cases_os/debian.md) — 功能完整的通用 Linux 映像檔，生態豐富
* [CentOS Fedora](/docker_practice/cases_os/centos.md) — 企業級 Linux 映像檔，適合複雜系統應用

## 本章小結

本章講解了典型作業系統映像檔的下載和使用。

除了官方的映像檔外，在 `Docker Hub` 上還有許多第三方組織或個人上傳的 Docker 映像檔。

讀者可以根據具體情況來選擇。一般來說：

* 官方映像檔體積都比較小，只帶有一些基本的元件。精簡的系統有利於安全、穩定和高效的執行，也適合進行個人化自訂。
* 出於安全考慮，幾乎所有官方製作的映像檔都沒有安裝 SSH 服務，無法透過使用者名稱和密碼直接登入到容器中。
