第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 sh | bash があれば 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 build は docker 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🪤😵💫(この章だけで脱出できる)
-
**
port is already allocated(ポート被り)**🔥 → 別ポートにする(例:-p 3001:3000)か、先に古いコンテナをstop→rm -
No such container(名前違い)🌀 →--nameを統一しよう(タイプミス減る!) -
Conflict. The container name is already in use(同名コンテナ残ってる)📦 →docker stop <name>→docker rm <name>の順で掃除🧹 -
execできない(コンテナ落ちてる)💥 → まずdocker logs <name>を見る(原因がほぼ書いてある)🪵(Docker) -
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:testdocker logs --tail 20 todo-api-testdocker exec -it todo-api-test shしてlsして出るdocker stop todo-api-testdocker rm todo-api-test
8) 次章へのつながり🧩🚀
この章の6コマンドが回せると、次の「まとめ」や、その先のComposeでの一発起動がめちゃ楽になります😆
Composeは今は docker compose が基本形で進化していて、Compose v2/v5 がサポート対象です(Docker Documentation)
必要なら、この第9章専用の「A4一枚チートシート(印刷向け)」も作れるよ📄✨