Ubuntu 18.04でDockerコンテナーのリソースを制限する方法

Dockerコンテナー内でWebアプリを実行することを考えている場合、またはすでにテクノロジーに適応している場合は、コンテナーが使用しているホストのリソースの量など、最も重要な側面の1つに注意する必要があります.


デフォルトでは、コンテナが使用できるメモリまたはCPUの量に制限はありません。ホストのカーネルスケジューラが許す限り使用できます。実行中のコンテナがホストマシンのメモリやCPUを過度に消費することを許可しないことが重要です。カーネルが空きメモリが非常に少ないことを検出すると、 メモリ不足の例外 プロセスの強制終了を開始します。これにより、場合によってはシステム全体がシャットダウンする可能性があります.

これらの状況を回避するには、常にアプリケーションでテストを実行し、必要なリソースの量を確認してから、適切な量のリソースを使用するようにコンテナーを制限する必要があります.

Dockerのリソース制限機能を使用するためのUbuntu 18.04の構成

それでは始めましょう。まず、カーネルがこれらの機能を許可しているかどうかを確認する必要があります。そのためには、次のコマンドを実行する必要があります.

$ sudo Docker info

出力の最後に次の警告が表示された場合は、システムファイルに変更を加える必要があります。.

警告:Noswaplimitsupport

この場合、ubuntu 18.04で以下の手順に従います。

  1. Ubuntuホストにsudo権限を持つユーザーとしてログインします.
  1. 編集 / etc / default / grub ファイルし、それに次の行を追加します.

GRUB_CMDLINE_LINUX ="cgroup_enable = memory swapaccount = 1"

  1. 上記の行を追加したら、ファイルを保存して閉じます。また、次のコマンドでGRUBを更新する必要があります。.

$ sudo update-grub

システムを再起動すると、変更が有効になります。次のコマンドを再度実行して、変更が有効になったことを確認します

$ sudo dockerinfo

警告が再び表示されない場合は、行ってもかまいません.

今、私たちが世話をする必要がある2つのタイプの主要なリソースがあります.

  1. 記憶
  2. CPU

コンテナのメモリアクセスを制限する

でコンテナを開始しながら ドッカーラン コマンドでは、さまざまなオプションを指定できます。以下は例です.

コンテナーのメモリ使用量を制限するには –記憶 オプション。正の整数の後に接尾辞sが続きます b、k、m、g. 次のコマンドを使用すると、Ubuntuコンテナは1ギガバイト以下のメモリを使用するという制限付きで実行されます.

$ sudo docker run -it –memory =” 1g” ubuntu / bin / bash

コンテナーのメモリスワップの使用をディスクの使用に制限するには –メモリスワップ オプション。また、正の整数の後に接尾辞sが続きます b、k、m、g. 次の場合、コンテナの使用が許可されます

1ギガバイトの非スワップメモリ 1ギガバイトのスワップメモリ. コンテナーに許可されるスワップメモリ​​の合計量は、-memory-swapと–memory(2g-1g)の差です。コンテナでスワップメモリ​​を使用したくない場合は、-memoryと–memory-swapの両方を同じ値に設定します.

$ sudo docker run -it –memory =” 1g” –memory-swap =” 2g” ubuntu / bin / bash

dockerがホストマシンのメモリ不足を検出し、設定した場合 –メモリ予約, その値が優先されます –記憶. しかし、あなたが設定していない場合 –記憶 コンテナのメモリ使用量を制限するものではありません。メモリ不足が検出された場合にのみ有効になります。一種のソフト制限です.

$ sudo docker run -it –memory =” 1g” –memory-reservation =” 512m” ubuntu / bin / bash

コンテナのCPU使用量を制限する

コンテナのCPU時間の使用を制限するには –CPU オプション. 「.5」に設定すると、50000マイクロ秒のCPU時間を意味します.

$ sudo docker run -it –cpus =".5" ubuntu / bin / bash

コンテナのCPUシェアを制限するには –cpus-shares オプション. デフォルトでは1024です. コンテナがホストマシンのCPUサイクルの大部分または小部分を使用できるようにするには、この値を増減します。これは、CPUサイクルがホストマシンによって制約されている場合に役立ちます。そうでない場合、コンテナは必要なだけのCPUサイクルを使用できます。これも一種のソフトリミットです.

$ sudo docker run -it –cpus-shares ="512" ubuntu / bin / bash

結論

コンテナのリソースを制限することは、ホストマシンのカーネル構成に大きく依存します。コンテナーの要件を理解し、それに応じてそれらを制限することは非常に重要ですが、この場合はubuntu 18.04であるホストマシン環境にも精通している必要があります。アプリで常に複数のテストを実行して、リソース要件の良いアイデアを得ます。リソースを注意深く使用すると、多くのコストを節約できます.

実行状態で実行中のDockerコンテナーの統計を表示するには、 ドッカー統計 コンテナ名を指定してコマンドを実行し、課した制限と構成を確認します.

$ sudo docker stats ubuntu

これらの上位3つの最高のWebホスティングサービスをチェック

FastComet

開始価格:
$ 2.95


信頼性
9.7


価格
9.5


使いやすい
9.7


サポート
9.7


特徴
9.6

レビューを読む

FastCometにアクセス

A2ホスティング

開始価格:
$ 3.92


信頼性
9.3


価格
9.0


使いやすい
9.3


サポート
9.3


特徴
9.3

レビューを読む

A2 Hostingにアクセス

ChemiCloud

開始価格:
$ 2.76


信頼性
10


価格
9.9


使いやすい
9.9


サポート
10


特徴
9.9

レビューを読む

ChemiCloudにアクセス

関連するハウツー記事

  • AWS EC2でDockerコンテナーを使用する方法
    専門家
  • OpenStack HeatでDockerコンテナーをデプロイする方法
    専門家
  • Ubuntu 16.04 VPSまたは専用サーバーでDocker Swarmクラスターをセットアップする方法
    専門家
  • AWS EC2でDockerコンテナーを使用する方法
    専門家
  • AWS EC2でDockerコンテナーを使用する方法
    専門家
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me