使用 Debian 10 Buster 部署 Docker 容器环境时,启动限制内存使用的容器时会出现警告。
缘起
报错如下
root@debian:~# docker run --name myweb --memory=512m --restart=always --network=backend \
> -p 80:80 -p 443:443 \
> -v /usr/mystack/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
> -v /usr/mystack/nginx/conf.d:/etc/nginx/conf.d \
> -v /usr/mystack/nginx/logs.d:/etc/nginx/logs.d \
> -v /usr/mystack/nginx/cert.d:/etc/nginx/cert.d \
> -v /usr/mystack/www:/var/www -d nginx:stable-alpine-perl
WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
c5cf19d3598f6affcb1adeb5bd28b9c21c1b715127a50a9a0510d07e9041431e
处理
查询资料后发现官方有解决办法,此问题只会出现在非 RPM 系列的系统上,如 Debian / Ubuntu 等,RadHat CentOS Fedora 等系统默认启用此功能,此功能基于内核实现,因此需要修改内核启动参数。
小贴士:如果容器不需要限制内存,则可以忽略此问题,即使不启动 Docker ,Swap 也会默认占用 1% 左右的空间,并且系统的总体性能会降低约 10% 。
内核参数
修改系统启动参数
# vim /etc/default/grub
在 GRUB_CMDLINE_LINUX
行后添加以下参数
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
更新启动参数
# update-grub
重启系统即可
# reboot
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2019-07-06 16:46 PM