第07章:Node公式イメージの“タグ”読み方👀🏷️
この章のゴールはシンプル!✨
node:24 とか node:24-bookworm-slim とかを見て、迷わず「どれを使うべきか」決められる状態になることです🐳✅
1) タグは「住所(OS)」と「荷物の量(中身)」が混ざってる📦🧭
Node公式イメージのタグはだいたいこういう情報を持ってます👇
- Nodeのバージョン:
24/24.13.0/ltsなど - ベースOS:
bookworm/bullseye/trixie/alpineなど - 軽量版かどうか:
slim(小さめ)など
2) まず覚えるべき“4大タグ”🧠✨
A. node:24(いちばん雑に書けるやつ)
- 「Node 24系の最新パッチ」へ自動で寄っていく “動くタグ” です🔁
- そして 今は Debian系(bookworm)側に紐づくのが基本です(タグ定義上も同居しています)📌
例:
24/24-bookworm/24.13.0-bookwormが同じまとまりにいます。(GitHub)
つまり、
node:24は「楽だけど、将来パッチが上がって中身が変わる」タイプ😺
B. node:24-bookworm(OS住所を明示する)
bookwormは Debianのコードネームで、Debian 12です🐧bullseyeは Debian 11、trixieは Debian 13。(GitHub)- 公式も「追加パッケージ入れるなら Debian名を明示すると破壊が減るよ」寄りの説明をしています🧯(Docker Hub)
「OSの違い」で壊れる事故(aptのパッケージ名差など)を避けたいなら、ここは大事👍
C. node:24-bookworm-slim(小さめ&安定寄りの鉄板)
slimは “よくある便利パッケージ”を削って、Node実行に必要な最小限だけに寄せた版です📦✂️ 公式説明:デフォルト版に入ってる共通パッケージが無いよ、という立ち位置。(Docker Hub)
「余計なもの少なめ」「本番寄り」な雰囲気。学習でも使いやすいです🙂
D. node:24-alpine(めちゃ小さい、でもクセあり)
- Alpineは超軽量(~5MB級)でイメージが小さくなりがち🧊✨(Docker Hub)
- ただし musl libc を使うので、ネイティブ系依存(
process.dlopenなど)でハマることがある⚠️ 対策としてgcompatやlibc6-compatの話が公式にあります。(GitHub) - さらに
bashやgitみたいな道具が入ってないことも多いです🧰❌(Docker Hub)
初心者は「後回し」でOK!使うなら“相性テスト前提”が安全😊
3) 「動くタグ」vs「固定タグ」🔒🔁
ここ、超大事です💡
✅ 動く(アップデートされる)タグ例
node:24(24系の最新へ)node:24-bookworm-slim(24系 + bookworm-slim の最新へ)node:lts(LTSの最新へ)←便利だけどより“動く”(GitHub)
✅ ガチ固定(再現性最強)タグ例
node:24.13.0-bookworm-slimみたいに パッチまで書く🧷 実際に24.13.0-bookworm-slimのようなタグが用意されています。(GitHub)
再現性だけ見ると「パッチ固定」が最強🏆 ただしセキュリティ更新は自分で上げる必要が出てきます🔁🛡️
4) “タグの読み方”ミニまとめ📚✨
たとえば👇
-
node:24- Node 24系(最新パッチへ動く)🔁
- Debian(bookworm)系に紐づくまとまりにある(GitHub)
-
node:24-bookworm-slim- Node 24系(最新パッチへ動く)🔁
- Debian 12(bookworm)🐧
- slim(中身少なめ)✂️(Docker Hub)
-
node:24-alpine3.23- Node 24系(最新パッチへ動く)🔁
- Alpine Linux(3.23)🧊(GitHub)
5) 体験:タグの違いを“目で見て”理解する👀🐳
Windowsのターミナル(PowerShell)でOKです👍
① OSの違いを確認する🐧🧊
docker run --rm node:24 cat /etc/os-release
docker run --rm node:24-bookworm-slim cat /etc/os-release
docker run --rm node:24-alpine cat /etc/os-release
② Nodeのバージョン(動くタグ感)を見る🔁
docker run --rm node:24 node -v
docker run --rm node:24-bookworm-slim node -v
③ イメージサイズをざっくり比較📦⚖️
docker pull node:24
docker pull node:24-bookworm-slim
docker pull node:24-alpine
docker images node:24 node:24-bookworm-slim node:24-alpine
6) よくある勘違い&罠💣😇
- 「alpineは小さい=常に正義」 → ネイティブ依存で詰まると、時間が溶けます🫠(musl絡み)(Docker Hub)
- 「slimなら何でもできる」 → “便利パッケージが削られてる”ので、ビルドやツールが必要な時は追加が必要になりがち🔧(Docker Hub)
- 「node:24 って一生同じ」 → 24系の最新パッチに追従するので、中身は更新されます(それが良さでもある)🔁(GitHub)
7) この章の結論:タグ選びの“最短ルール”🏁✨
- 迷ったら:
node:24-bookworm-slim👍 (OS明示 + ほどよく軽量、扱いやすい) - いろいろ入れて試行錯誤したい:
node:24(デフォルト) 🧰 (共通パッケージ多めでラクな場面がある)(Docker Hub) - サイズ最優先&相性テストできる:
node:24-alpine🧊 (musl注意)(Docker Hub) - 再現性ガチ勢:
node:24.13.0-bookworm-slimみたいにパッチ固定🔒(GitHub)
8) AIに投げる一言(タグ選び支援)🤖💬
- 「Node公式Dockerイメージで、Debian bookworm-slim を使って、再現性と事故りにくさ優先のタグ案を出して。alpineは初心者向けに注意点も添えて。」
- 「
node:24とnode:24-bookworm-slimの違いを、開発でハマる例(git/bash/ネイティブ依存)付きで説明して。」
ちょいクイズ✅😆
node:24は固定?それとも動く?🔁bookwormは何系?🐧alpineでハマりやすい理由を1つ言える?🧊⚠️
次の第8章では、この理解を使って「じゃあ最初の固定は何を選ぶ?」を“迷わず決める”ところまで行きます🟢📦✨