😂

Docker Imageどれを選んだらいいのかわからない

2024/06/10に公開

困ったこと

いざアップデートしようとしてtagsを見ていてもいっぱいあり過ぎてわからない...
slim?buster?alpine?何が違うんだ...
となったので調べてみました

nodeを導入する前提として進めていきますが、node以外でも参考になるはず
https://hub.docker.com/_/node/tags

よければこちらもみてください↓

https://zenn.dev/mayobimu/articles/3a7a607b68cb8c

node

22.xは2024-10-29からLTSになるのでそれまでは依存関係次第ですが20.xを選択しておけばOK

https://nodejs.org/en/about/previous-releases

https://github.com/nodejs/release?tab=readme-ov-file#release-schedule

ベースイメージ

v20.10で絞り込んでみるとこれだけあリました

20.10.0
20.10-slim
20.10-buster
20.10-buster-slim
20.10.0-bullseye
20.10-bullseye-slim
20.10.0-bookworm
20.10-bookworm-slim
20.10.0-alpine3.19
20.10.0-alpine3.18
20.10.0-alpine3.17
20.10.0-alpine
20.10-alpine

Dockerイメージの選び方

各ベースイメージの特徴

Alpine Linux

  • サイズ: 非常に小さい(数MB程度)
  • 起動速度: 非常に速い
  • 安定性: 高い
  • セキュリティ: 最小限のパッケージで攻撃面が小さい
  • 互換性: やや低い
  • パッケージマネージャ: apk
  • 使用シーン: 軽量でセキュリティが重視される場合

Debian

  • パッケージマネージャ: apt-get

Debian buster (Debian 10)

  • リリース時期: 2019年7月
  • 特徴: LTS
    • 保守的なエコシステムを好む企業やプロジェクトによく利用される

Debian bullseye (Debian 11)

  • リリース時期: 2021年8月
  • 特徴: 最新のLTS
    • 新しいパッケージや機能が多数含まれる。新しい技術を利用したい場合に適している

Debian bookworm (将来的なリリース)

  • リリース時期: 現在開発中
  • 特徴: 最先端の開発版
    • 最新のテクノロジーやライブラリをテストするために利用される立ち位置

slimの特徴

通常のDebianイメージよりも軽量化されており、不要なパッケージやファイルが削除されているので、コンテナのサイズが小さくなり、起動速度が向上します。
軽量化に伴い、一部のユーティリティやツールが含まれていない場合があるため、必要に応じて追加のインストールが必要です。

選ぶ基準

基準 条件 推奨イメージ
コンテナのサイズ 小さなサイズが必要 alpine, slim
サイズが問題ではない 標準のDebianbuster, bullseye, bookworm
互換性とパッケージ 広範な互換性が必要 標準のDebianbuster, bullseye, bookworm
最低限の互換性で十分 alpine, slim
セキュリティ 高いセキュリティが必要 alpine
標準的なセキュリティで十分 標準のDebianbuster, bullseye, bookworm
パフォーマンス 起動速度が重要 alpine, slim
起動速度はそれほど重要でない 標準のDebianbuster, bullseye, bookworm
最新の技術やパッケージ 最先端の技術が必要 bullseye, bookworm
安定性重視 buster

Discussion