docker 运行容器时指定--sysctl参数来设置系统参数
指定--sysctl参数来设置系统参数,通过这些参数来调整系统性能,Docker通过一个 ValidateSysctl函数来限制 sysctl参数可以传入的项,源码如下:
// docker/opts/opts.go func ValidateSysctl(val string) (string, error) {
validSysctlMap := map[string]bool{
"kernel.msgmax": true,
"kernel.msgmnb": true,
"kernel.msgmni": true, "kernel.sem": true, "kernel.shmall": true, "kernel.shmmax": true,
"kernel.shmmni": true,
"kernel.shm_rmid_forced": true, } validSysctlPrefixes := []string{ "net.", "fs.mqueue.", }
从源码中可以看出Docker允许调整的包含前缀是kernel.xxx、net和fs.mqueue这三类,使用示例如下:
docker run --sysctl kernel.sem="800 640000 400 800" --sysctl fs.mqueue.msg_max=10000--sysctl kernel.shmmni=40960--sysctl kernel.msgmax=65536 \ --sysctl kernel.msgmnb=84000--sysctl kernel.shmall=2097152--sysctl kernel.shmmax=8405194752 ......