Dockerイメージでよく見る`FROM alpine:latest`。このAlpine、コンテナの世界では覇権を取ってる。イメージサイズがたったの5MB。Ubuntuの1/30以下。なぜここまで軽くできるのか。
秘密はmusl libcとBusyBox。GNUのglibc(重い)じゃなくてmusl(軽い)を使い、コマンド群はBusyBox(全部入りの軽量バイナリ)で済ませる。余計なものは一切入ってない。
Alpineの特徴:
- イメージサイズ5MB — コンテナのpullが一瞬。レジストリ容量も節約。CI/CDパイプラインが速くなる。
- セキュリティが堅い — PaXやスタック保護など、カーネルレベルの防御機能がデフォルト。攻撃対象領域が少ない。
- apkが速い — パッケージマネージャーがaptより圧倒的に速い。依存解決もシンプル。
- コンテナ用途に特化 — デスクトップ用途は考えてない。純粋に「アプリを動かすためだけの土台」。
デメリット。musl libcのため、glibc前提のバイナリが動かない。Oracle JDKとか、一部のPythonネイティブ拡張(Pandasとか)で苦労する。そしてドキュメントが少ない。
僕の使い分け。本番コンテナのベースイメージはAlpine。イメージサイズが小さいとデプロイが速いし、脆弱性スキャンも早く終わる。でもPythonデータサイエンス系のイメージだけは仕方なく`python-slim`(Debianベース)を使ってる。
「軽さは正義」を体現するディストロ。コンテナで使うなら一度試す価値あり。