コンテナ は、アプリと、その動作に必要な部品(ライブラリや設定)を 一式まとめて、どんな環境でも同じように動かせる ようにする技術です。
読み取り専用の設計図を イメージ、それを動かした実体を コンテナ と呼びます。1つのイメージから、コンテナは何個でも作れます。
flowchart LR IMG["イメージ(設計図・読み取り専用)"] --> C1[コンテナ1] IMG --> C2[コンテナ2] IMG --> C3[コンテナ3]
コンテナが解決するのは、「自分の環境では動いたのに、本番では動かない」という、開発の古典的な悩みです。環境ごと丸ごと持ち運ぶので、開発・検証・本番のどこでも同じように動きます。
仮想マシン との違いも重要です。仮想マシンが OS を丸ごと抱えるのに対し、コンテナは OSを共有し、アプリ単位で軽く分離 します。そのぶん起動が速く、軽量です。
代表的な道具が Docker です。コンテナが多数になると、その管理を自動化する Kubernetes が使われます。マイクロサービス や現代的なクラウド運用の、中心的な技術です。
手を動かして学ぶなら、Dockerコース でイメージとコンテナの基本を、Kubernetesコース で大量のコンテナを束ねる運用を、それぞれブラウザ内のシミュレータで体験できます。