ドッカー基盤となる技術:
ドッカー基礎となるコア技術2つの名前空間とグループ制御は、
名前空間:仮想コンテナは個々の容器を単離するために使用されるコア技術であり、容器は間の競合を解決することができます。
主に以下の6つの分離技術によって達成:
2つの擬似ファイルシステムがあります:/ procのと/ SYS /
- UTS:ネットワークが別のノードではなく、ホスト上のプロセスとして見ることができるように、各容器は、別個のホスト名(ホスト名)とドメイン名(ドメイン名)を持つことが可能となります。
- IPC:Linuxまたは共通のセマフォ、メッセージキュー、共有メモリを含む一般的なプロセス相互作用方法の使用との間の相互作用の過程でcontaner。コンテナ間の相互作用のプロセスは、実際にはまだホスト上の相互作用の同じPIDのプロセスを持っています。
- PID:別のユーザーが、プロセスのpidな名前空間の分離株を介して行われ、異なる名前空間には、同一のPIDを持つことができます。親プロセスのすべてのLXC(Linuxのコンテナ)プロセスは、プロセスにドッキングウィンドウドッキングウィンドウで、各プロセスは、LXC別の名前空間を持っています。
- NET:プロセスの異なるユーザがpidnamespace分離株を介して行われ、異なる名前空間には、同一のPIDを持つことができます。親プロセスのすべてのLXCプロセスは、プロセスにドッキングウィンドウドッキングウィンドウで、各プロセスは、LXC別の名前空間を持っています。
- MNT:ファイルシステムのマウントポイント。
- USRE:各コンテナは、別のユーザーとグループIDを持つことができますが、ユーザーはコンテナ内ではなく、コンテナのホスト内のユーザプログラムの実行に使用できることを意味します。
只要解耦了这6项,其他系统资源即便有共用的情况,计算机也认为是在两个不同的系统中。
cgroup(制御プログラムがリソースを引き継ぐ)
のcgroupを達成するためには、統一されたインタフェースを提供するために、リソース管理の異なるユーザレベルに対する主な目的です。オペレーティング・システム・レベルの仮想化への単一のプロセスコントロールのリソースから。
:の効果のcgroup
1)リソース制約:のcgroupは、プロセスグループによって使用されるリソースの総量を制限することができます。
2)優先順位付け:番号とディスクIO帯域幅の大きさの分布を介してCPUタイムスライスは、実行中のプロセスの優先度を制御するために、実際に同等である
3)リソース統計を:のcgroupが使用統計システムリソースができます。このようなように、CPU時間、メモリ使用量およびなど。
これは、量に応じて課金するために使用することができます。
4)プロセス制御:あなたはプロセスグループ、回復およびその他の操作の実行を中断することができます。
cgroup内のアプリケーション:
1)メモリとスワップを制限する:
物理メモリとスワップ:容器は二つの部分を含みます
在docker中可以通过参数控制容器内存的使用:
-m或--memory:设置内存的使用限额
--memory-swap:设置swap(交换分区)的使用限额
// CentOSのベースのミラーリング、メモリの制限は200M、スワップパーティションに300Mのメモリであり、[root@sqm-docker01 ~]# docker run -it -m 200M --memory-swap 300M centos
容器にメモリ制限を表示するには:
[root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.limit_in_bytes
209715200 #显示的是字节
[root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes
314572800
2)CPU制限のコンテナ:
設定コンテナは重量-C CPUまたは--cpu-株を実験します。あなたが設定されていない場合、デフォルトは1024です。
//基于centos镜像,运行一个容器,名字为containerB,cpu权重限制为512:
[root@sqm-docker01 ~]# docker run -it --name containerB -c 512 centos
[root@b2cf9f28ce1d /]# cat /sys/fs/cgroup/cpu/cpu.shares
512
3)コンテナブロックIOを(ディスクの読み取りおよび書き込み)制限:
BPS:秒あたりの書き込みデータの量。SECOND、バイトあたりの
IOPS:1秒あたりのIO。毎秒のIO--device-読み-BPS:読み取りデバイスのBPSを設定
--device-BPS-書き込み:デバイスに配置されたBPSを書きます--device-読み取りIOPS:読み取りデバイスのIOPSの設定
--device-書き込みIOPSを:書き込み装置に提供IOPS
//创建一个容器名为testA,并限制该磁盘每秒写入的数量为为30MB。
[root@sqm-docker01 ~]# docker run -it --name testA --device-write-bps /dev/sda:30MB centos
テスト用のデータを書き込みます。
パラメータ説明:
では/ dev / zeroからINFILE =エキス
outfileは=カスタム名
BS = 1Mのファイルサイズは1Mのさ
COUNT = 800は、800回の合計を書きました。
直接oflagの=:ファイルを書き込むためのディレクトリIOの方法を指定するには、これは--device書き込み-BPSの効果を行います。
それはおそらくとき26Sで、80Mに毎秒の書き込み回数で見つけることができます。
ときに適切にディスクに書き込ま:
--------この記事の最後に、これまで、読んでくれてありがとう--------