指定--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 ......