メインコンテンツまでスキップ

第09章:よく使うコマンド“最短セット”を覚える🧠⚡(build/run/stop/rm/logs/exec)

この章は「Dockerの操作、最低限これだけ出来れば回る!」っていう6コマンドを、手が勝手に動くレベルまで持っていく筋トレ回です🏋️‍♂️🐳✨ (この6つが回せると、開発中の“動かない😵”がかなり自力で直せます)


0) まず結論:6コマンドはこの流れで覚える🔁✨

build → run → logs → exec → stop → rm これが“コンテナ運用の最短ループ”です🌀

  • build:レシピ(Dockerfile)からイメージを作る🍳📦
  • run:イメージからコンテナを起動する🚀📦
  • logs:中で何が起きたかを見る🪵👀
  • exec:中に入って現場確認する🔦🕵️‍♂️
  • stop:止める⏹️
  • rm:箱(コンテナ)を捨てる🗑️✨

この感覚、超大事です🙂 (Docker公式のCLIチートシートにも、この系統の基本形がまとまってます)(Docker)


1) 1分で環境チェック✅(迷子防止)

まずは「Dockerが動いてるか」を一発確認します👀

  • バージョン情報を見る:docker version(CLIとEngineの情報が出る)(Docker Documentation)
  • Windows + WSL2のDocker Desktopは、WSL2エンジンが基本(設定で有効化&WSL統合)(Docker Documentation)

2) “最短セット”チートシート📄✨(まずはコピペでOK)

コツ:--name を必ず付ける👍 これだけで「IDどれだっけ?」地獄が激減します😇

やりたいことこれだけ覚える(基本形)よく使うオプション
イメージ作るdocker build -t app:dev .--no-cache(キャッシュ無視)(Docker)
起動するdocker run --name app -p 3000:3000 app:dev-d(裏で起動) / --rm(終了後に自動削除)(Docker)
止めるdocker stop appまずはこれだけでOK🙂(Docker)
消すdocker rm app-f(強制。慣れてから⚠️)(Docker)
ログ見るdocker logs -f app--tail 50(最後だけ見る)(Docker)
中で確認docker exec -it app shbash があれば bash でもOK(Docker)

3) ハンズオン:10分で“1周”して手に覚えさせる🏃‍♂️💨

ここでは「コマンド筋トレ」優先で、超ミニAPIを使います😄 (Todo API本体はこの後どんどん育てるので、今日は回すことが勝ち🏆)

3-1) ミニAPIを用意する📁✨

作業フォルダを作って、2ファイルだけ置きます👇

server.js(超ミニAPI)

const http = require("http");

const server = http.createServer((req, res) => {
if (req.url === "/health") {
res.writeHead(200, { "Content-Type": "application/json" });
return res.end(JSON.stringify({ ok: true }));
}
res.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
res.end("Hello Docker 👋🐳\nTry /health");
});

server.listen(3000, "0.0.0.0", () => {
console.log("listening on http://0.0.0.0:3000");
});

Dockerfile(最小)

FROM node:24-bookworm-slim
WORKDIR /app
COPY server.js .
EXPOSE 3000
CMD ["node", "server.js"]
  • **Node 24 はLTS系(安定運用の系統)**として扱われています(Node.js)
  • node:24-... のようにバージョン指定タグが公式イメージで提供されています(Docker Hub)

3-2) ① build:イメージを作る🍳📦

docker build -t todo-api:cmddojo .

💡最新のDockerでは、ビルドはBuildKitがベースで、docker builddocker buildx build のエイリアス扱い(互換性のための挙動差はある)という位置づけです(Docker Documentation)


3-3) ② run:コンテナ起動🚀📦

docker run --name todo-api -p 3000:3000 -d todo-api:cmddojo
  • --name todo-api後のコマンドが全部ラク😇
  • -p 3000:3000:ホスト→コンテナに入口を繋ぐ🚪🔌
  • -d:裏で起動(ターミナルが占有されない)✨(Docker)

動作確認(WSLならcurlが楽ちん)👇

curl http://localhost:3000/health

3-4) ③ logs:今起きてることを見る🪵👀

docker logs -f todo-api
  • -f:追いかける(tail -fみたいなやつ)🏃‍♂️💨(Docker)

「一旦最後だけ見たい」なら👇

docker logs --tail 50 todo-api

3-5) ④ exec:中に入って現場確認🔦🕵️‍♂️

docker exec -it todo-api sh

中に入れたら、軽く見回り👇

pwd
ls
node -v
exit

docker exec -it <container> sh は公式チートシートにも載ってる定番形です(Docker)


3-6) ⑤ stop:止める⏹️

docker stop todo-api

(止めるのもチートシート定番)(Docker)


3-7) ⑥ rm:箱を捨てる🗑️✨

docker rm todo-api

(停止済みコンテナを消すのも定番)(Docker)


4) “2周目”で定着させるコツ🧠✨

✅ 2周目:--rm を使って「後片付け自動」を体験🧹

docker run --rm --name todo-api -p 3000:3000 todo-api:cmddojo
  • 終了したらコンテナが残らないので散らかりにくいです🧼(Docker)

(止めるときは別ターミナルで docker stop todo-api でOK👌)

✅ 3周目:わざとミスって“直し方”を覚える😈➡️😇

  • 例:すでに todo-api が存在してたら? → docker rm してから再run、または別名で起動(--name todo-api2

5) よくある詰まりTOP5🪤😵‍💫(この章だけで脱出できる)

  1. **port is already allocated(ポート被り)**🔥 → 別ポートにする(例:-p 3001:3000)か、先に古いコンテナを stoprm

  2. No such container(名前違い)🌀 → --name を統一しよう(タイプミス減る!)

  3. Conflict. The container name is already in use(同名コンテナ残ってる)📦 → docker stop <name>docker rm <name> の順で掃除🧹

  4. exec できない(コンテナ落ちてる)💥 → まず docker logs <name> を見る(原因がほぼ書いてある)🪵(Docker)

  5. buildが遅い / 変化が反映されない気がする🐢docker build --no-cache ... を一回だけ試す(最終手段)(Docker) → そしてビルドの仕組みはBuildKit前提で進化してる(後の章で効いてくる)(Docker Documentation)


6) AI活用(この章に効く“聞き方”テンプレ🤖✨)

コピペでどうぞ👇

  • 🧠 コマンドの意味を短くしてdocker run --name todo-api -p 3000:3000 -d ... を“文系大学生向け”に1行ずつ説明して」

  • 🪵 ログから次の一手 「この docker logs を貼るので、原因候補トップ3と確認コマンドを出して」

  • 🧯 “最短で復旧”手順にして 「状況:ポート被り / コンテナ名衝突 / execできない。最短復旧の手順をチェックリストで」


7) ミニテスト🎯(合格ライン:3分で1周できる)

✅ 次がスラスラ出来たら勝ちです🏆🎉

  • docker build -t todo-api:test .
  • docker run --name todo-api-test -p 3001:3000 -d todo-api:test
  • docker logs --tail 20 todo-api-test
  • docker exec -it todo-api-test sh して ls して出る
  • docker stop todo-api-test
  • docker rm todo-api-test

8) 次章へのつながり🧩🚀

この章の6コマンドが回せると、次の「まとめ」や、その先のComposeでの一発起動がめちゃ楽になります😆 Composeは今は docker compose が基本形で進化していて、Compose v2/v5 がサポート対象です(Docker Documentation)


必要なら、この第9章専用の「A4一枚チートシート(印刷向け)」も作れるよ📄✨