更新:
このトピックに関する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
この数は、ホストシステムの実際のメモリよりも大きくなります。
コンテナにリソース制約が正しく設定されていることを確認する方法はありますか?コンテナ内からリソース制約情報を見つけるにはどうすればよいですか?提案に感謝します。
このコマンドを試してみてください。docker host it working docker run -it -d -m 100M --cpuset-cpus = '0' --cpus = 1 --cpu-shares = 256 --name testing ubuntu/bin/bash