【こんてな】

コンテナ とは?

💡 アプリを「どこでも同じように動く箱」に入れる
📌 このページのポイント
仮想マシン vs コンテナ 仮想マシン(VM) ハードウェア ホストOS ハイパーバイザー ゲストOS 重い アプリA ゲストOS 重い アプリB コンテナ ハードウェア ホストOS コンテナエンジン(Docker) アプリA Libs 軽量 アプリB Libs 軽量 アプリC Libs 軽量 コンテナはゲストOSが不要なため起動が速く、リソース消費が少ない
VMはOS丸ごと仮想化、コンテナはアプリ単位で軽量に分離
ひよこ ひよこ

コンテナって何が嬉しいの?

ペンギン先生 ペンギン先生

「自分のPCでは動くのにサーバーでは動かない」問題が消えるよ。アプリ+ライブラリ+設定をまとめてコンテナイメージにすれば、開発環境でもCI環境でも本番環境でも全く同じものが動く。環境差異によるバグがなくなるんだ

ひよこ ひよこ

仮想マシンとの違いは?

ペンギン先生 ペンギン先生

仮想マシンはOS丸ごと仮想化するから起動に数分、ディスクもGB単位。コンテナはOSカーネルを共有してアプリ層だけ隔離するから、起動が秒単位でディスクもMB単位。1台のサーバー仮想マシンは数台だけど、コンテナなら数十〜数百個動かせるよ

ひよこ ひよこ

Dockerfileって何?

ペンギン先生 ペンギン先生

コンテナイメージの「レシピ」だよ。ベースイメージの指定(FROM node:20)→ファイルのコピー(COPY . .)→依存パッケージのインストール(RUN npm install)→起動コマンド(CMD ["node", "app.js"])を順番に書く。このレシピから誰でも同じイメージを作れるんだ

ひよこ ひよこ

おもしろい!Kubernetesも必要?

ペンギン先生 ペンギン先生

本番で数十〜数百のコンテナを運用するなら必要だよ。コンテナの自動スケール、障害時の自動復旧、ローリングアップデート(無停止デプロイ)を管理してくれる。ただし学習コストが高いから、小規模なら Docker Composeクラウドのコンテナサービス(ECS、Cloud Run)で十分だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コンテナ」って出てきたら「アプリを環境ごとパッケージ化する技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Container」 = 容器・入れ物
💬 輸送用コンテナのように、中身(アプリ)を標準化された箱に入れてどこにでも運べるイメージだよ
← 用語集にもどる