runcとは?初心者向けのやさしい解説と使い方ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
runcとは?初心者向けのやさしい解説と使い方ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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 と表の比較

用語特徴
runcOCI準拠の軽量なコンテナ実行エンジン
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 で実現します。

runcのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14446viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2406viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1067viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1026viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
928viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
895viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
831viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
830viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
793viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
780viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
714viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
688viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
588viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
568viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
562viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
547viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
510viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
491viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
471viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
468viws

新着記事

インターネット・コンピュータの関連記事