Dockerのホストネイティブモード(runc runtime)
Dockerのホストネイティブモード(runc runtime)
Dockerのデフォルト実行モード。
Linuxカーネルの機能(namespace + cgroup)でプロセスを隔離。仮想マシンは使わない。
動作
コンテナ内のプロセスはホストと同じカーネル上のプロセス
コンテナ作成: clone(CLONE_NEWNS|CLONE_NEWPID|...) システムコールで名前空間を作り、隔離
ps auxへの表示
コンテナ内の全プロセスがホストのps auxにroot所有で表示される
理由: カーネルが同一なのでホスト側のプロセス一覧に制限がかからない
DockerはデフォルトでUser Namespaceの再マッピングをしない(コンテナのroot=ホストのroot)
隔離の強度
名前空間レベル(カーネルバグを突かれるとエスケープされる可能性がある)
回避策(psに表示したくない場合)
--userns-remap=default で非特権UIDにマッピング(表示自体はされるがrootじゃなくなる)
Kata Containers でVM隔離に切り替える
該当環境
Linux(NixOS, Ubuntu, Debian等)でDocker Engine直接インストールした場合