🐥

LinuxさんとDockerさんの関係。あとカーネルさん

2021/01/31に公開

はじめに

くーばねてすをやっつけるためにこれまでに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/メモリなどのリソースを隔離するための仕組みらしい('_')
https://christina04.hatenablog.com/entry/2020/02/24/170724

まとめ

コンテナ化するために色々考えてるんだなって思った(^_-)-☆

Discussion