Open16
Docker
chrootとpivot_root ✅
- rootディレクトリと見立てて、上の階層は見えないようにして隔離する
OverlayFS ✅
- dockerfileに記述した通りのファイル構造を組み立てる。ファイルをMergeするようにしている。
Namespace
- カーネルリソースの隔離
cgroup ✅
- CPUやMemoryなどのリソース制限をかける
Capability
- 権限制限
↑の解説
自分以外の実行中プロセスを含めた 全てのプロセス一覧を確認
ps aux
なぜDockerではホストOSと違うOSベースのコンテナイメージが動くのか
↓
dockerはLinuxカーネルを共有するから
procと呼ばれるプロセスが稼働するための仮想ファイルシステムです。ホストOS上の/procと先ほど作ったコンテナ用の/procをマッピングしています。
現在使っているttyを作成しコンテナ用のttyと紐づけています
pid
ホストからはコンテナのプロセスが見える。
親から子のプロセスは見える。子から親のプロセスは見えない。
Linux
cgroupにおける
-1 は無制限
Network Namespace
sudo ip netns add namespace1
以下のコマンドは同じ意味
ip netns list
ls /var/run/netns
# mkdir /var/run/netns
# touch /var/run/netns/namespace1
# mount --bind /proc/self/ns/net /var/run/netns/namespace1
or
# ln -s /proc/$$/ns/net /var/run/netns/symlink
namespaceを確認
ls -l /proc/$$/ns
ハードウェアの仮想化が不要