Docker 生产环境挑战应对技巧
1. 禁用 OOM 杀手
在 Linux 操作系统内核中,“OOM 杀手”是一个线程,当主机内存不足时,它会决定杀死哪些进程。如果你希望防止容器被 OOM 杀手杀死,可以在启动容器时使用 --oom-kill-disable 标志。
$ docker run -ti --oom-kill-disable ubuntu sleep 1
不过,使用这个标志时会收到警告:在未设置 -m/--memory 限制的情况下禁用 OOM 杀手可能很危险。因为如果主机内存耗尽,操作系统会先杀死其他用户进程。为了避免警告,可以同时设置内存限制:
$ docker run -ti --oom-kill-disable --memory 4M ubuntu sleep 1
注意,最小可分配内存为 4M,也可以使用“G”来分配更大的内存。要判断容器是否被 OOM 杀手杀死,可以使用 docker inspect 命令:
$ docker inspect logger | grep OOMKilled
"OOMKilled": false,
使用这个标志存在安全和稳定性风险,因为未授权用户可能利用它运行内存泄漏的进程。为了更精细地管理内存,可以使用 --oom-sc
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



