我在 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
Run Code Online (Sandbox Code Playgroud)
这个警告是什么意思?我肯定有一个交换分区,正如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
Run Code Online (Sandbox Code Playgroud)
Sam*_*dis 42
交换限制支持允许您限制容器使用的交换,请参阅https://docs.docker.com/engine/admin/resource_constraints
您可以按照这些说明在 Ubuntu 或 Debian 上启用这些功能。即使 Docker 没有运行,内存和交换计算也会产生大约 1% 的总可用内存开销和 10% 的整体性能下降。
1) 以具有 sudo 权限的用户身份登录 Ubuntu 或 Debian 主机。
2) 编辑
/etc/default/grub
文件。添加或编辑该GRUB_CMDLINE_LINUX
行以添加以下两个键值对:Run Code Online (Sandbox Code Playgroud)GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
3) 更新 GRUB。
Run Code Online (Sandbox Code Playgroud)$ 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
Run Code Online (Sandbox Code Playgroud)
1.1) 修改或创建行
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 cgroup_enable=memory swapaccount=1"
Run Code Online (Sandbox Code Playgroud)
1.2) 保存
2)更新组
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
3) 重启
sudo reboot
Run Code Online (Sandbox Code Playgroud)