
LinuxC入門|コンテナ技術の概要と基本的な仕組み
これまでに仮想マシンを使ったLinux環境について学んできた方は、
「OSを丸ごと用意して、その上でアプリケーションを動かす」というイメージを持っていると思います。
コンテナ技術は、そうした仮想マシンとは少し考え方が違う、
もっと軽くて、もっと手軽な仮想化の仕組みです。
ここでは「コンテナ技術の概要と基本的な仕組み」をテーマに、
コンテナとは何か、仮想マシンと何が違うのか、
そしてLinux上でどのように使われているのかを、やさしく説明していきます。
LinuC 101試験でもよく登場する分野なので、全体像をつかむことを目標に読み進めてみてください。
これまで紹介してきた仮想化環境では、
まず仮想マシンを作成し、その中にOSをインストールしてから利用する、という流れが一般的でした。
一方、コンテナ技術では、ホストOSの上で
「コンテナ」という単位の仮想環境を直接動かします。
| 仮想化方式 | 特徴 |
|---|---|
| 仮想マシン | OSごと仮想化する |
| コンテナ | ホストOS上のプロセスとして動作 |
コンテナは、ホストOS上ではひとつのプロセスとして動作します。
そのため、仮想マシンと比べてオーバーヘッドが小さく、
CPUやメモリの消費も少なく済みます。
「軽量で起動が速い」という点が、コンテナ技術の大きな魅力です。
コンテナが軽量に動作できる理由のひとつが、
ホストOSと同じカーネルを利用しているという点です。
仮想マシンのように、コンテナごとに別のカーネルを持つわけではありません。
| 項目 | 仮想マシン | コンテナ |
|---|---|---|
| カーネル | 仮想マシンごとに存在 | ホストOSと共有 |
| 起動時間 | 比較的長い | 非常に短い |
| リソース消費 | 大きめ | 小さい |
ただし、カーネルを共有しているからといって、
コンテナ同士が混ざってしまうわけではありません。
ファイルシステムや環境変数、プロセス空間は、
コンテナごとにしっかり分離されています。
コンテナ環境では、
ホストOS上に同じ名前・同じIDのプロセスが存在していても問題ありません。
これは、コンテナごとにプロセス空間やユーザーID空間が分離されているためです。
| 環境 | 動作例 |
|---|---|
| ホストOS | httpd (ID 5000) |
| コンテナ1 | httpd (ID 5000) |
| コンテナ2 | httpd (ID 5000) |
このように、
同じ名前・同じIDのプロセスが同時に存在できるのも、
コンテナ技術ならではの特徴です。
これにより、複数のアプリケーション環境を安全に並行運用できます。
コンテナ技術を使った仮想化の全体像は、
仮想マシン方式と並べて図で見ると、とても理解しやすくなります。

この図は、
仮想マシンは「OSごと分かれている」こと、
コンテナは「OSカーネルを共有している」ことを表しています。
コンテナ技術を実装する代表的なソフトウェアが Docker です。
Dockerを使うことで、
コンテナの作成・起動・停止・削除といった操作を簡単に行えます。
AlmaLinux 9.6 環境では、Dockerを使って
コンテナ環境を操作できるようになっています。
Dockerの操作は、docker コマンドを使って行います。
ここでは、参考文書にある docker pull や docker run の代わりに、
docker container ls を使った例で説明します。
[suzuki@AlmaLinux ~]$ docker container lsdocker container ls コマンドの書式
| 要素 | 説明 |
|---|---|
| docker | Dockerを操作するコマンド |
| container ls | 実行中のコンテナを表示 |
docker container ls は何をするコマンド?
docker container ls は、
現在起動しているコンテナの一覧を表示するコマンドです。
どのコンテナが動いているかを確認したいときによく使われます。
主なオプション
| オプション | 説明 |
|---|---|
| -a | 停止中のコンテナも含めて表示 |
| -q | コンテナIDのみを表示 |
使用例
[suzuki@AlmaLinux ~]$ docker container ls -aこの例では、起動中・停止中を含めたすべてのコンテナが表示されます。
コンテナの状態確認にはとても便利なコマンドです。
Dockerでは、コンテナを作成する前に
イメージと呼ばれる元となる環境を用意します。
イメージは、コンテナの設計図のようなものです。
| 用語 | 意味 |
|---|---|
| イメージ | コンテナの元となる環境 |
| コンテナ | イメージから作成された実行環境 |
イメージを元に、必要な数だけコンテナを作成できるため、
同じ環境を何度でも簡単に再現できます。
コンテナ環境をさらに多く扱う場合、
「たくさんのコンテナをまとめて管理したい」という場面が出てきます。
そこで登場するのが Kubernetes(クーバネティス) です。
Kubernetesは、複数のコンテナを効率よく管理するための
オーケストレーションツールです。
起動・停止・負荷分散などを自動化できるのが特徴です。
LinuC 101試験では、
DockerとKubernetesの存在と役割を押さえておくことが重要です。
細かい操作までは問われませんので、
「Dockerはコンテナを動かすツール」
「Kubernetesはコンテナをまとめて管理するツール」
というイメージを持っておくと安心です。
このように、コンテナ技術は
仮想マシンとは異なるアプローチで仮想環境を提供する仕組みです。
軽量で、起動が速く、環境を簡単に再現できる点は、
開発・テスト・運用のすべてで大きな強みになります。
