Ubuntu 16.04でDocker(1.9.1)を実行しています。 docker info
を実行すると、出力の最後の行にWARNING: No swap limit support
と表示されます。
INFO[0781] GET /v1.21/info
Containers: 0
Images: 0
Server Version: 1.9.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 0
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.4.0-62-generic
Operating System: Ubuntu 16.04.1 LTS (containerized)
CPUs: 2
Total Memory: 3.664 GiB
Name: lenovo
ID: A3ZV:2EVK:U5QB:O7CG:PEDL:SANK:X74X:QNLC:VOTK:GFDR:S24T:C5KT
WARNING: No swap limit support
この警告はどういう意味ですか? free -mh
でわかるように、スワップパーティションは確実にありますが、available
の下にスワップが存在しない理由がわかりません。
total used free shared buff/cache available
Mem: 3.7G 1.9G 182M 157M 1.6G 1.3G
Swap: 3.8G 2.9M 3.8G
スワップ制限のサポートにより、コンテナーが使用するスワップを制限できます https://docs.docker.com/engine/admin/resource_constraints を参照してください
以下の手順に従って、UbuntuまたはDebianでこれらの機能を有効にできます。メモリとスワップのアカウンティングでは、Dockerが実行されていなくても、利用可能なメモリ全体の約1%のオーバーヘッドと、全体的なパフォーマンスの10%の低下が発生します。
1)UbuntuまたはDebianホストにSudo権限を持つユーザーとしてログインします。
2)
/etc/default/grub
ファイルを編集します。GRUB_CMDLINE_LINUX
行を追加または編集して、次の2つのキーと値のペアを追加します。GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
3)GRUBを更新します。
$ Sudo update-grub
私のGoogle Cloud Computeインスタンスでは、受け入れられた回答とは少し異なる方法で実行する必要がありました。
1)/etc/default/grub.d/50-cloudimg-settings.cfgファイルを編集します
Sudo nano /etc/default/grub.d/50-cloudimg-settings.cfg
1.1)行を変更または作成する
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 cgroup_enable=memory swapaccount=1"
1.2)保存
2)grupを更新する
Sudo update-grub
3)再起動
Sudo reboot