記事のディレクトリ
まず、どのようにこれらの3つの指標を見るために最初に見てみましょう
1、第ドッカー容器を入力
docker exec -it b6bac438271d /bin/bash
2、ビューのディスク
3、表示メモリ
4、CPUを参照してください
物理CPU:実際のマザーボード上に挿入されたCPU番号は、物理IDの数は、いくつかの(物理ID)が繰り返されることができない
CPUの監査:数は、上記データ処理できるモノリシックCPUチップセット
の論理CPUを:一般的に、論理CPU =×当たりの物理CPUコア片の数
1.物理cpu数:[root@server ~]# grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
2.cpu核数:[root@server ~]# grep 'cpu cores' /proc/cpuinfo|uniq|awk -F ':' '{print $2}'
注:上のコマンド入力、次のインターフェースは、一つの論理CPU、CPU使用率、および各コアを見ることができます。
注:ホスト上でこれらのコマンドによって、このルックのような上記の外観は、あなたが、これはなぜ、同じドッキングウィンドウの容器やホストを見つけるのだろうか?
このビューは同じであるので、まず私たちが知っている必要があり、すべての、デフォルトのホストドッキングウィンドウのすべてのCPU、メモリ、ディスク、およびコンテナリソースを共有しています。なぜなら攻撃を受けて個々の容器を防ぐために、気まぐれにリソースを消費するだけでなく、他のコンテナの崩壊、我々はどのくらいを制限する必要が各コンテナのリソースを引き起こしました。だから、2つの問題があります。まさにそれを見てどのように?どのようにこれらのリソースのコンテナそれの使用を制限するには?
第二に、どのように正確な各コンテナそれの資源消費の観点?
ディスクをチェックしてください:この外観のようなトップのみ!
メモリ、CPU消費の各コンテナを確認します。
#宿主机上输入命令
docker stats #这是实时查看cpu、内存消耗情况
docker stats --no-stream #查看瞬间的cpu、内存消耗情况
第三には、どのようにこれらのコンテナリソースそれのそれぞれの使用を制限するには?
私たちは、クラウドホストを買った場合は、各ホストのクラウドディスク、CPU、メモリの構成は、たとえば、明確なを持って、私はアリクラウドホストが40Gのハードディスクドライブで、1コアCPU、メモリの2Gを買いました。次のステップは、私たちがコンテナそのような制限が必要です。
図1に示すように、CPU、メモリの制限
docker run -itd --cpuset-cpus=0-0 -m 4MB docker.io/jdeathe/centos-ssh /bin/bash
--cpuset-cpus:设置cpu的核数,0-0、1-1、2-2...(这种是绑定cpu,把本虚拟机绑定在一个逻辑cpu上);0-1、0-2、0-3和0,1、0,2、0,3(这两种形式都是指定多个逻辑cpu,每次随机使用一个逻辑cpu,相当于是共享cpu)
#注意:一个docker容器绑定一个逻辑cpu便于监控容器占用cpu的情况;而共享cpu可以更好利用cpu资源,而且要选好cpu调度算法!
-m:设置内存的大小
私は2つのコアCPUを設定し、そのエラー:
エラー手段:エラー応答デーモン:要求されたCPUが利用できない-要求0-1、利用可能です:0。
説明私たちのVMware仮想マシンの作成には、唯一の1コアを与えたので、2つの核が与えることはできません!
ビューCPU、メモリ制限成功した場合:
メモリ、CPU制限成功!道のコンテナのこのビューには、CPUコアの数を確認するために何を知っていません!私は後にCPUを追加し、次の、topコマンドを試してみて、を見て、cpuinfo文件
できるCPUリソースを占有容器の実際の状況を見ていません!
図2に示すように、ディスクのサイズ制限
(1)バックアップイメージコンテナファイル
- バックアップイメージ
docker save docker.io/centos >/root/centos-image.tar
- バックアップドッキングウィンドウコンテナ
先docker commit把容器提交成镜像,再备份镜像即可
(2)設定ファイルのドッキングウィンドウを変更
ドッキングウィンドウの設定ファイル:の/ etc /のsysconfig /ドッカ(ノートではないドッカ・ストレージ・ファイル)、パラメータOPTIONSの後に次のコードを追加します。
OPTIONS='--storage-opt overlay2.size=40G'
再起動ドッキングウィンドウ、与えられました:
systemctl status docker.service -l
注:プロジェクトのクォータ(ディレクトリクォータは)
説明:Overlay2ドッカーディスク・ドライブ・モード、サイズを変更する場合は、必要性は、LinuxのファイルシステムはXFSに設定されていることを確認し、ディレクトリレベルのディスククォータ機能します。
(3)次に、我々は、ディレクトリレベルのディスククォータ機能をサポートしています
まず、ディスククォータのディレクトリをサポートして何を理解できますか?
A:サポートは固定サイズのディスクサイズのディレクトリに割り当てられています。ディレクトリのサイズを理解するには?固定サイズのハードディスクは、このディレクトリをマウントし、ディレクトリのサイズは、ハードディスクのサイズです。内容は、下のハードディスクファイルのサイズを指定するには、リソースを割り当てることができます
-
新しいハードディスクの追加
注:は/ dev / sdbとは、私が追加したディスクです! -
XFSファイルシステムは、ハードディスクのフォーマットをフォーマットします
mkfs.xfs -f /dev/sdb
- 次のようにデータディレクトリ、データディレクトリのドッキングウィンドウを作成します。
mkdir /data/ -p
- (デフォルトXFSクォータ機能をサポートする)データディレクトリをマウントし、ディスククォータ機能を開きます
mount -o uquota,prjquota /dev/sdb /data/
#把/dev/sdb这块新建硬盘挂载到/data/,且让/data/目录支持目录级别和用户级别的配额!
図は、証明/ dataディレクトリのサイズが限定されていました!!
そして、ディレクトリ対応のディスク・ディレクトリクォータは、20Gのディスクサイズを割り当てることができ20G / data /ディレクトリのサポートであります!
- ビューのクォータ - 次のようにコンフィギュレーションの詳細は、コマンドは次のとおりです。
xfs_quota -x -c 'report' /data/
このコマンドxfs_quotaを実行した後、上記の表示、説明、/ data /ディレクトリは、ディレクトリクォータ機能をサポートしてきました!
(4)からの/の/ var / libにするソフトリンクとしてデータ/ドッカー/
mkdir /data/docker
rm -rf /var/lib/docker/
ln -s /data/docker/ /var/lib/
このように、は/ var / libに/ドッキングウィンドウ/ディレクトリのディレクトリレベルディスククォータ機能をサポートしていません、それはデータ/ドッキングウィンドウ/ディレクトリの下に/の/ var / libに/ドッキングウィンドウ/ディレクトリにディスククォータ機能ソフトリンクのサポートレベルのディレクトリになります
(5)ドッカー負荷バックアップイメージをロードし、容器を実行するために、ビューのディスクサイズ
docker load < /root/centos-image.tar
docker run -itd --privileged --cpuset-cpus=0-1 -m 4048M docker.io/centos /bin/bash
ディスクサイズが10Gの成功に限られています!
4Gのメモリサイズは成功に限定されています!
3、注意の最後のポイント
それは、ディスクのサイズ、またはCPU、メモリを制限するかどうかは、彼らが実際に所有しているの大きさを超えることはできません!
例えば、私は、システムはまた、メモリの一部を考慮する必要がありCentOSのが実行されているため、コンテナは指定されたメモリ3Gを超えてはならない、(クォータ/ data /ディレクトリのみ20Gが存在する可能性があるため)このVMwareのメモリは4G、CPU 2コア、ハードディスク20Gである必要があり、CPUは、もはや二つのコアよりも(すなわち、0-0,1-1、0-1であることができる)、ハードディスクは20G(15G以下、好ましくは)を超えません