📦
runC: 分かり易く解説 (第2回) - 環境構築編
Dockerの中核コンテナ技術であるrunCについて、以下の通りいくつかの記事に分けて分かり易く解説します。もしかしたら、実際にrunCを動かしてから、第2回の内容に目を通した方が理解が進むかもしれません。
- 第1回:概要と実現技術
- 第2回:インストールと環境構築
- 第3回:runCを実際に動かしてみる
runCインストール
前提条件
runCインストール自体は簡単です。ただし、大抵の場合は大丈夫かと思いますが、runCを利用するには前提としてLinux Kernelがcgroups機能をサポートしている必要があります。
cgroupsとは?
プロセスグループのリソース(CPU、メモリ、ディスクI/Oなど)の利用を制限・隔離するLinuxカーネルの機能です。
cgroupsの確認方法
以下のように/proc/cgroupsが存在していれば、大丈夫です。
$ cat /proc/cgroups
#subsys_name hierarchy num_cgroups enabled
cpuset 3 1 1
cpu 4 1 1
cpuacct 4 1 1
blkio 12 1 1
memory 11 1 1
devices 5 89 1
freezer 8 1 1
net_cls 2 1 1
perf_event 6 1 1
net_prio 2 1 1
hugetlb 7 1 1
pids 9 95 1
rdma 10 1 1
インストール手順
これだけです。
sudo apt install runc
runC環境構築
一番難しい、runC設定ファイルのconfig.jsonについて解説します。
config.jsonは通常runCで動かしたいコンテナディレクトリのルートに配置します。この辺は次の実際にrunCでUbuntu18.04を動かす編で実例を示しますので、ここでは文法・設定意味的な部分を解説します。
config.jsonの作成
すみません、現在準備中です。随時更新中ですので、しばらくお待ち下さい。
ひな形の作成
以下のコマンドでひな形のconfig.jsonを作成可能です。
runc spec
基本的な使い方
コンテナ作成
sample_containerという名前のコンテナを作成して実行します。
sudo runc create sample_container
コンテナ一覧確認
sudo runc list
コンテナ動作開始
sudo runc start sample_container
コンテナ作成と動作開始を1コマンドで対応
sudo runc run sample_container
作成したコンテナ内で処理を実行
作成したコンテナの中でlsコマンドを実行する例です。
sudo runc exec sample_container ls
コンテナ動作停止
コンテナを停止します。
sudo runc kill sample_container
killでコンテナが停止しない(ステータスがstoppedにならない)場合、最終手段として以下を利用します。
sudo runc kill sample_container KILL
コンテナ削除
コンテナを削除します。
sudo runc delete sample_container
Discussion