LinuxさんとDockerさんの関係。あとカーネルさん
はじめに
くーばねてすをやっつけるためにこれまでにLinuxさんとAWSさんと仲良くさせていただいたが、新たなステージに上がるためについにdockerさんに会いに行くことにした。dockerさんと仲良くなることでコンテナシステムの仕組みの理解とくーばねてすを倒すための調査をする。
概要
■コンテナとカーネル
■ネームスペース
■コントロールグループ
をまとめた(^^)
■コンテナとカーネル
コンテナでは色んなディストリビューション(配布パッケージ)のコンテナを実行することができる。コンテナで作成されるディストリビューション、バージョンに対して対応していないコンテナホストのカーネルでも実行できてしまう、ということだ。
それはなぜなのか。
Linux Standard Base(という規格)で、Linuxの各ディストリビューション間の互換性や相互運用性を良くするようにISO(国際標準化機構)にて国際標準として定められているからだ。
なのでdockerではソースコード(ソフトウェアの設計内容)を実行可能な形式に変換(コンパイル)するときに互換性のあるソースコードに変換され実行される、というかたちになっている。
■ネームスペース
dockerではコンテナを独立して運用するためにLinuxのカーネル技術であるネームスペースが使用される。ネームスペースでは特定のプロセスに対して 他のプロセスから分離するようにしてくれる。
コンテナを独立して運用するためにネームスペースでは次のように管理している。
|ネームスペース|意味|役割|
| --- | --- | --- | --- |
|pid|PID:Process ID|プロセスIDを分離する|
|net|NET:Networking|ネットワークインターフェースを管理する|
|ipc|IPC:Intr Process Communication|プロセス間通信のアクセス管理|
|mnt|MNT:Mount|ファイルシステムのマウント管理|
|uts|UTS:Unix Timesharing System|カーネルとバージョンの識別子を分離|
■コントロールグループ(cgroup)
dockerではCPUやメモリなどの監視や管理を設定するためにLinuxのカーネル技術のcgroupを使用している。CPU/メモリなどのリソースを隔離するための仕組みらしい('_')
まとめ
コンテナ化するために色々考えてるんだなって思った(^_-)-☆
Discussion