Dockerを使用してコンテナリソースを制限する方法

Dockerを使用してコンテナリソースを制限する方法

覗き見の問題

サーバーでは、IIS サービスが複数のサイトを展開していると仮定すると、サイトの 1 つに問題 (CPU が 100% になったり、メモリがいっぱいになったりするなど) が発生すると、このサーバーの他のサイトもクラッシュします。同様に、コンテナを使用する場合、単一のホスト上で数十のコンテナが実行される場合があります。コンテナは互いに分離されていますが、ホストと同じカーネル、CPU、メモリ、ディスク、その他のハードウェア リソースを使用します。コンテナ リソースが制限されていない場合、コンテナは互いに影響を及ぼします。

解決

Docker は、メモリ、CPU、またはディスク IO を制限する方法を提供しており、これにより、コンテナが占有するハードウェア リソースのサイズと量を制限できます。docker create を使用してコンテナを作成するか、docker run を使用してコンテナを実行するときに、このコンテナのハードウェア リソースを制限できます。

メモリ制限

Docker が提供するメモリ制限機能は次のとおりです。

1. コンテナが使用できるメモリとスワップ パーティションのサイズ。

2. コンテナのコアメモリサイズ。

3. コンテナ仮想メモリのスワッピング動作。

4. コンテナ メモリのソフト制限。

5. メモリを過剰に占有するコンテナを強制終了するかどうか。

6. コンテナの強制終了の優先度

-m, --memory メモリ制限。形式は数値と単位です。単位は b、k、m、g のいずれかです。最低4M
--memory-swap メモリの合計制限 + スワップ パーティション サイズ。上記と同じ形式です。必須 -m はメモリのソフト制限を設定します。上記と同じ形式 --oom-kill-disable OOM キラーがコンテナを強制終了するのを防ぐかどうか。デフォルトでは設定されていません --oom-score-adj OOM キラーによって強制終了されるコンテナの優先度。範囲は [-1000, 1000]、デフォルトは 0 です
--memory-swappiness は、コンテナの仮想メモリ制御動作を設定するために使用されます。値は 0 から 100 までの整数です。 --kernel-memory カーネル メモリの制限。上記と同じ形式、最小サイズは4M

ユーザー メモリ制限は、コンテナーが使用できるメモリとスワップ パーティションのサイズを制限します。
これを使用する際に従うべき 2 つの直感的なルールがあります。

-m、--memory オプションの最小パラメータは 4M です。
--memory-swap はスワップ パーティションではなく、メモリとスワップ パーティションの合計サイズであるため、--memory-swap は -m、--memory よりも大きくする必要があります。

CPU 制限

docker run コマンドと CPU 制限に関連するすべてのオプションは次のとおりです。

--cpuset-cpus="" 使用できるCPUのセット。値は0~3、0、1です。
-c, --cpu-shares=0 CPUシェアの重み(相対重み)
cpu-period=0 は CPU CFS 期間を 100 ミリ秒から 1 秒の範囲で制限します (つまり [1000, 1000000])。
--cpu-quota=0 CPU CFS クォータを制限します。1ms 以上、つまり >= 1000 である必要があります。
--cpuset-mems="" メモリノード (MEM) での実行を許可します。NUMA システムでのみ有効です。

--cpuset-cpus は、コンテナが使用できる vCPU コアを設定するために使用されます。 -c、--cpu-shares は、複数のコンテナが CPU を競合する場合に、各コンテナに割り当てることができる CPU 時間の相対的な割合を設定するために使用されます。 --cpu-period と --cpu-quata は、コンテナが使用できる CPU 時間の絶対量を設定するために使用されます。

これで、docker を使用してコンテナ リソースを制限する方法についての説明は終了です。docker コンテナ リソース制限の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerとiptablesとブリッジモードのネットワーク分離と通信操作の実装
  • Dockerコンテナのネットワーク管理とネットワーク分離の実装
  • Dockerコンテナでユーザーを分離する方法
  • Docker Docker の保存場所を変更する コンテナイメージのサイズ制限を変更する操作
  • Docker CPU 制限の実装
  • Docker がコンテナに利用可能な CPU を制限する方法
  • Docker でコンテナに使用できるメモリを制限する方法
  • Docker の分離と制限の原則の紹介

<<:  HTML tbody の使用

>>:  MySQL で JSON 形式のフィールドをクエリする詳細な説明

推薦する

mysql5.7のインストールとNavicateの長期無料利用の実施手順

(I) mysql5.7のインストール: ❀詳細:無料のグリーンバージョン5.7のインストール方法は...

Vue3 (V) HTTPライブラリaxiosの統合の詳細

目次1. axiosをインストールする2. アクシオスの使用1.ホームページでaxiosを参照する2...

Linux/CentOS サーバー セキュリティ構成の一般ガイド

Linux はオープン システムです。インターネット上には、既成のプログラムやツールが多数存在します...

JavaScript でモバイル モーダル ボックスの効果を実現

この記事では、モバイルモーダルボックス効果を実現するためのJavaScriptの具体的なコードを参考...

よくある Linux 英語エラーの中国語翻訳 (初心者必見)

1.コマンドが見つかりません コマンドが見つかりません2. そのようなファイルまたはディレクトリは...

シンプルな計算機を実装する JavaScript コード

この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...

Windows 10 での MySQL 8.0.11 圧縮バージョンのインストール チュートリアル

この記事では、MySQL 8.0.11圧縮版のインストールチュートリアルを参考までに紹介します。具体...

最新の人気スクリプトAutojsソースコード共有

今日は、最新の人気スクリプト 50 個を含むソース コードを共有します。現在、Mine Guard ...

iframe でページを開く方法

解決:リンクのターゲット属性値をターゲット フレームワーク名と同じに設定するだけです。具体的な手順:...

CSS で要素を垂直方向に中央揃えする 7 つの方法

【1】中央の要素の幅と高さを知る絶対値 + 負のマージンコードの実装 .wrapBox5{ 幅: 3...

Vueのアイデアを使ってストレージをカプセル化する方法

目次背景関数目的アイデアの源成し遂げるセット得るプロパティの削除拡張機能を禁止するもっている要約する...

デザイナーの「職業病」について

デザイナーは世界で最も繊細で感情的な人々だと私はいつも感じています。私がこう言うときに優越感を感じる...

CSSにスティッキー効果を追加する方法

前面に書かれたfilter:blur と filter:contrast がこのような素晴らしい化学...

CSS3で作られたレインボーボタンスタイル

結果: 実装コード: html <div class="buttons"&...

MySql におけるプロセス制御関数/統計関数/グループ化クエリの使用法の分析

これからの道のりは長く困難ですが、私は探求を続けます。また週末がやってきました。引き続き、皆さんと一...