在 docker 容器内更改 tcp_keepalive_*

Chaning tcp_keepalive_* inside a docker container

我在 docker 容器中有一个应用程序 运行,我想设置:tcp_keepalive_intvltcp_keepalive_time

我可以只在主机系统上更改它并期望 docker(以及内部的所有内容)遵守这些设置吗?

因为/proc/sys/net/ipv4/tcp_keepalive_*容器内不存在

尝试查看 Docker 运行 文档以在 docker run 命令中使用 --sysctl net.ipv4.xxx 覆盖。请注意 --sysctl 不适用于 docker service 命令...

详情请参考https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime

希望在docker实例中实现相同的人被牧场主运行,然后他们可以玩docker-compose配置。您需要在 docker-compose 文件中添加以下行:

sysctls:
      net.ipv4.tcp_keepalive_intvl: '45'
      net.ipv4.tcp_keepalive_probes: '15'
      net.ipv4.tcp_keepalive_time: '120'
privileged: true

使用包含上述配置的 docker-compose 文件创建堆栈后,您可以从 Rancher 登录 docker shell 并从 /proc 文件系统检查相应的配置。