

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに runcとは何か
runc はコンテナを実行するための低レベルの実行エンジンです。Open Container Initiative が定めた OCI の仕様に準拠しており、他のツールと組み合わせて使われます。具体的には Docker や containerd などの上位ツールが runc を呼び出して、コンテナの起動停止やリソースの分離などの仕事を任せます。つまり runc はコンテナを走らせるための土台になるソフトウェアです。
この仕組みの良い点は、複数のツールと互換性が保たれやすい点です。たとえば Docker を使うときでも、内部的には runc を使ってコンテナを実行します。runc 自身はコマンドラインツールとして動き、設定ファイルとファイルシステムの状態を元に新しいプロセスを隔離して動かします。
runc の基本的な仕組み
runc は Linux の名前空間や cgroup などの機能を利用して、別の部屋に入ったようにプロセスを動かします。名前空間はネットワークやプロセスIDなどの隔離を作る仕組みで、cgroup はCPUやメモリの使い方を制限します。containerd などの上位ツールはこの runc に対して、どんな設定でどのファイルを/rootfs に置くのかを伝え、実際の起動を実行します。
設定ファイル config.json にはコンテナの名前、割り当てるリソース、起動時のコマンドなどが書かれています。rootfs はコンテナが使う実行時ファイルシステムです。これらを用意してから runc が読み込み、独立した新しいプロセス空間を作成し、そこにアプリを置いて実行します。
使い方のイメージ
実務では runc を直接使う場面は少ないかもしれませんが、基本的な流れを知っておくと理解が深まります。まず container id を決めて、config.json と rootfs を用意します。次に runc create という操作で新しいコンテナを作成し、runc start で実行を始めます。必要に応じて runc exec で実行中のコンテナの中に新しいコマンドを投げ込み、runc state で現在の状態を確認します。最後に runc delete で資源を解放します。この流れを覚えると、Docker や Kubernetes の内部動作が見えやすくなります。
なお、現代の実務ではこの作業を直接行うことは少なく、上位ツールが自動化します。しかし runc の仕組みを理解しておくと、トラブル時の原因を特定しやすくなります。
関連する用語の整理と注意点
OCI はコンテナの標準を作っている団体です。config.json はコンテナの起動条件を記述するファイルで、rootfs は実行時のファイルシステムです。これらの用語は混同しやすいので、覚えると混乱を防げます。
runc と表の比較
| 用語 | 特徴 |
|---|---|
| runc | OCI準拠の軽量なコンテナ実行エンジン |
| OCI | オープンコンテナイニシアチブの標準 |
| config.json | コンテナの設定を記述するファイル |
| rootfs | コンテナが使うファイルシステム |
| 上位ツール | Docker や containerd は runc を使って実体の起動を行う |
まとめ
このように runc はコンテナを動かす「土台」になる技術です。初心者はまず「OCI とは何か」「config.json と rootfs の意味」を押さえると理解が進みやすいです。日常的には Docker などのツールを使いながら、内部で runc がどう動くのかを知ると、トラブル時の対応が自分でできるようになります。
runcの同意語
- runc
- Open Container Initiative (OCI)準拠の、軽量なコンテナ実行時(ランタイム)です。コンテナの作成・起動・停止を行う最小構成の実装で、Dockerやcontainerdなどの内部で使われることが多いです。
- RunC
- runcの表記ゆれの一つ。実質は同じOCI準拠のコンテナランタイムで、文献やドキュメントでRunCと書かれることがあります。
- OCI runtime
- Open Container Initiativeが定義する、コンテナを実行するための標準的なランタイム。runcはこの規格に準拠する実装のひとつです。
- OCI準拠ランタイム
- OCIの仕様に基づく、コンテナを実行するためのソフトウェア。runcはその代表的な実装です。
- コンテナランタイム
- コンテナを作成・実行・管理するソフトウェアの総称。runcはその中の具体的な実装のひとつです。
- コンテナ実行エンジン
- コンテナを起動・実行するエンジン的役割を持つソフトウェア。runcはこのカテゴリに該当します。
- 軽量コンテナランタイム
- 機能を最小限に絞り、リソースを抑えて動作するコンテナランタイム。runcはその典型例です。
- Linux向けコンテナランタイム
- 主にLinux環境で使われる、コンテナを実行するランタイム。runcはLinuxで広く利用されます。
- Open Container Initiative準拠の実装
- OCI準拠の仕様に適合した実装の総称。runcはその代表的なもののひとつです。
runcの対義語・反対語
- 停止
- 現在実行中の runc により起動しているコンテナの動作を止め、CPU・メモリなどのリソースの使用を解放する状態へ移行させる行為です。停止後は再起動が可能な状態になります。
- 終了
- 実行中のコンテナのライフサイクルを完結させ、すべての関連プロセスを終了させてリソースを解放すること。終了は停止より完全性が高い状態です。
- 強制終了
- 通常の停止手順を踏まずに、強制的にコンテナのプロセスを終了させること。データの整合性に注意が必要です。
- 一時停止
- コンテナの実行を一時的に中断する状態。後で再開して作業を続けられるようにします。
- 削除
- 停止済みのコンテナをディスクから完全に取り除くこと。再作成や再利用が難しくなる操作です。
- 資源解放
- 停止後にそのコンテナが占有していたCPU・メモリ・ネットワーク等のリソースを解放して、他のプロセスが使える状態にすること。
runcの共起語
- OCIランタイム
- Open Container Initiative が定義した、コンテナを実行するための低レベル実行エンジンの総称。runcはこの枠組みの実装の一つです。
- runC
- runc の別表記・名称。OCIランタイム仕様に準拠する低レベルの実装。
- Docker
- コンテナプラットフォームの代表格。内部で runc などの実行エンジンを使ってコンテナを起動することが多いです。
- containerd
- コンテナのライフサイクルを管理するデーモン。実行時には runc を呼び出して実行します。
- Kubernetes
- 大規模なコンテナオーケストレーションツール。CRI などを介してランタイムとして runc を使えることがあります。
- CRI
- Container Runtime Interface。Kubernetes などが利用する共通API。実行エンジンとして runc を使う際の関係用語。
- CRI-O
- Kubernetes で使われる軽量ランタイム実装の一つ。runc をバックエンドに利用することが多い。
- OCI
- Open Container Initiative。OCI が定義する標準と仕様の総称。runc はこの仕様に準拠します。
- OCI仕様
- OCI が定めるランタイム仕様・イメージ仕様などの総称。runc はこの仕様に準拠して動作します。
- Linux名前空間
- プロセスの分離機能の一つ。コンテナの隔離には欠かせない基本要素です。
- cgroup
- リソースの階層的な管理システム。コンテナごとに CPU・メモリなどの制限を設定します。
- seccomp
- システムコールのフィルタリング機能。セキュリティの観点から runc で設定されることが多いです。
- AppArmor
- Linux のセキュリティモジュールの一つ。コンテナの保護に用いられます。
- SELinux
- LSM の一つで、アクセス制御を強化。コンテナのセキュリティ設定に影響します。
- crun
- 軽量な runC 実装の一つ。runc 同様に OCI 仕様へ対応します。
- shim
- コンテナとランタイムの間を仲介する小さなプロセス。runc でも shim が使われます。
- libcontainer
- Docker が過去に使っていた低レベルライブラリ。現在は runc へ移行しています。
- Go言語
- runc は Go で実装されています。開発・拡張もしやすい言語です。
- GitHub
- runc の公式リポジトリが公開されているコードホスティングサイト。コントリビューションの場です。
- コンテナイメージ
- コンテナで実行する元となるファイル群。OCI イメージ仕様に沿ったものを使用します。
- Dockerイメージ
- Docker が利用する代表的なイメージ形式。実際にはOCIイメージ仕様に準拠しています。
runcの関連用語
- runC
- 低レベルのコンテナランタイム。OCIの仕様に準拠し、実際にコンテナを起動・停止させる役割。Docker が以前から使用してきた技術の中核の一つ。
- Docker
- コンテナを作成・実行・管理するプラットフォーム。内部では runC などのランタイムを使い、開発・運用を簡便にします。
- OCI
- Open Container Initiativeの略。ランタイムとイメージの標準仕様を決め、互換性を確保します。
- containerd
- コンテナのライフサイクルを管理するデーモン。runCを起動させ、コンテナの監視・再起動などを担います。
- CRI-O
- Kubernetes向けの軽量なコンテナランタイム。runCを使ってコンテナを実行します。
- Container runtime
- コンテナを実行・管理するための基盤ソフトウェア。Docker、containerd、CRI-O などが該当します。
- Kubernetes
- 大規模なコンテナのオーケストレーションツール。クラスタ内のコンテナを自動配置・スケール・管理します。
- Linux namespaces
- コンテナを他と分離する仕組みの一つ。PID、NET、MNT、IPC、USER、UTS などを独立させます。
- cgroups
- CPU・メモリ・ネットワーク帯域などの資源を制限・監視する仕組み。コンテナのリソースを分離します。
- seccomp
- システムコールを制限するセキュリティ機能。悪意ある操作を防ぎ、コンテナの安全性を高めます。
- AppArmor
- Linuxのセキュリティモジュールの一つ。コンテナの権限を制限します。
- SELinux
- Linuxの強力なセキュリティモジュール。アクセス制御を厳しく適用します。
- OCI runtime spec
- OCIが定めるランタイムの仕様。runCはこの仕様に沿って動作します。
- rootless containers
- ルート権限なしで実行できるコンテナ運用。セキュリティと安全性を高めます。
- shim
- コンテナの実行プロセスとランタイムの仲介役。runc では shim を介して管理されることが多いです。
- rootfs
- コンテナのルートファイルシステム。イメージを展開して、中に入るベースとなるディスク階層です。
- イメージ
- コンテナの元になる読み取り専用のファイルセット。Dockerfile から作成され、runC がこのイメージを元にコンテナを起動します。
- Dockerfile
- イメージを自動作成する設計図。順次実行するコマンドを記述してイメージを構築します。
- chroot
- 古い隔離技術の一つ。現代のコンテナは主に namespace+cgroups で実現します。



















