我有一个将net.ipv4.tcp_keepalive_time内核参数设置为 600的 docker 主机。但是当容器运行时,它使用不同的值:
$ sysctl net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_time = 600
$ docker run --rm ubuntu:latest sysctl net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_time = 7200
Run Code Online (Sandbox Code Playgroud)
这是为什么,我该如何更改此值而不必传递--sysctl选项?
--sysctl在我的情况下,我无法通过的原因是该主机是一个 docker swarm 容器,目前swarm不支持此选项。
但是容器不应该只从主机获取这些内核参数吗?我已经重新启动了 docker 服务(及其容器)。
编辑:一些额外的主机信息:
$ uname -r
4.15.0-38-generic
$ docker --version
Docker version 18.06.1-ce, build e68fc7a
Run Code Online (Sandbox Code Playgroud)