web-dev-qa-db-ja.com

Dockerコンテナのメモリ制限とCPU制限

更新:

このトピックに関するstackoverflowに関する多くの質問と議論を見つけました。そして、彼らは何千人ものユーザーによって受け入れられ、開始されたとマークされていますが、ここでは正しい答えではないようです。


次のようにリソースの制約があるdocker(バージョン1.13.1、ビルド092cba3)コンテナーを実行しました。

docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -m 4096M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 -p $IMAGE_NAME

ホストシステム(RHEL 7)には、4つのコアと8Gメモリがあります。基本的に、コンテナで使用可能なメモリとCPUを制限します。コンテナを正常に起動した後、bashを開き、コンテナ内から制限情報を見つけようとしました。しかし、私は正しい情報を得ることができませんでした。

私はこれを試しました:

Sudo cat /proc/meminfo

結果は次のとおりです。

ホストシステム MemTotal:8008812 kB MemFree:7416404 kB MemAvailable:7537332 kB
Dockerコンテナ MemTotal:8008812 kB MemFree:7318052 kB MemAvailable:7498764 kB

同様に、CPU制限を取得したかったのです。

grep -c ^processor /proc/cpuinfo

結果は次のとおりです。

ホストシステム 4
Docker Image 4

コンテナによって適用されるCPUとメモリの制限は、コンテナからは見えないようです。また、cgroup情報を照会しようとしました。

mkdir -p /tmp/memory
mount -n -t cgroup -o memory cgroup /tmp/memory

次に、cgroupファイルを調べます。

[root@engrlab memory]# cat /tmp/memory/memory.limit_in_bytes
9223372036854771712

この数は、ホストシステムの実際のメモリよりも大きくなります。

コンテナにリソース制約が正しく設定されていることを確認する方法はありますか?コンテナ内からリソース制約情報を見つけるにはどうすればよいですか?提案に感謝します。

更新

これが有効な答えです: https://stackoverflow.com/a/41827812/3209177


私はこの答えを見つけました:

ドッカーコンテナのメモリ制限が機能しない

私はそれを試して、私の観察で戻ってきます。

このコマンドを試してみてください。docker host it working docker run -it -d -m 100M --cpuset-cpus = '0' --cpus = 1 --cpu-shares = 256 --name testing ubuntu/bin/bash

docker stats testing

1
Thol Voleak