Docker、コンテナのCPUリソースの利用上限を簡単に設定可能に。正式版となったバージョン1.13で「--cpus」フラグを追加

2017年1月27日

1台のサーバに複数のDockerコンテナを展開したとき、それぞれのDockerコンテナ上で稼働しているアプリケーションが安定的に実行されるためには、ほかのDockerコンテナが利用するCPUやメモリ、I/Oなどのコンピュータリソースに影響を受けず、一定のコンピュータリソースを安全に確保し、利用し続けられる必要があります。

今月正式版がリリースされたDocker 1.13では、そうしたDockerコンテナ内アプリケーションの安定稼働のため、これまで複雑だったDockerコンテナにおけるCPUリソースの利用制限の設定を簡単にする「--cpus」フラグを導入したと説明されています

説明によると、Docker 1.13以前のバージョンでもCPUリソースの利用をコンテナごとに制限することはできました。しかしその設定はあまり直感的ではありませんでした。

Dockerのドキュメント「Limit a container's resources」の説明を引用すると、あるホスト上に展開されたDockerコンテナが利用するCPUリソースの上限を50%までに制限しようとするとき、Docker 1.12以前では次のように記述する必要がありました。

$ docker run -it --cpu-period=100000 --cpu-quota=50000 ubuntu /bin/bash

一方、Docker 1.13以後では次のように簡単になっています。

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

これによって(ホストOSがLinuxであれば)LinuxカーネルのスケジューラであるCFSの設定を変更します。このとき、CPUリソースを50%までであれば.5を、複数のCPUがある場合には、CPUが1つまでであれば「--cpu 1.0」など、直感的なCPUリソースの上限設定ができるようになりました。

Limit a container’s resources - Docker」では、このほか個別のコンテナのCPUリソースの上限設定や、メモリの利用制限設定などの方法についても解説されています。

このあたらしい「--cpus」フラグはLinuxとWindowsのどちらでも利用可能とのことです。

あわせて読みたい

Docker コンテナ型仮想化 仮想化




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本