Skip to main content

第07章:Node公式イメージの“タグ”読み方👀🏷️

この章のゴールはシンプル!✨ node:24 とか node:24-bookworm-slim とかを見て、迷わず「どれを使うべきか」決められる状態になることです🐳✅


1) タグは「住所(OS)」と「荷物の量(中身)」が混ざってる📦🧭

Node公式イメージのタグはだいたいこういう情報を持ってます👇

  • Nodeのバージョン24 / 24.13.0 / lts など
  • ベースOSbookworm / 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住所を明示する)

  • bookwormDebianのコードネームで、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 など)でハマることがある⚠️ 対策として gcompatlibc6-compat の話が公式にあります。(GitHub)
  • さらに bashgit みたいな道具が入ってないことも多いです🧰❌(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:24node:24-bookworm-slim の違いを、開発でハマる例(git/bash/ネイティブ依存)付きで説明して。」

ちょいクイズ✅😆

  1. node:24 は固定?それとも動く?🔁
  2. bookworm は何系?🐧
  3. alpine でハマりやすい理由を1つ言える?🧊⚠️

次の第8章では、この理解を使って「じゃあ最初の固定は何を選ぶ?」を“迷わず決める”ところまで行きます🟢📦✨