【发布时间】:2017-04-19 10:10:23
【问题描述】:
我有一个在 docker 容器中运行的应用程序,我想设置:tcp_keepalive_intvl 和 tcp_keepalive_time。
我可以在主机系统上更改它并期望 docker(以及里面的所有东西)遵守这些设置吗?
因为/proc/sys/net/ipv4/tcp_keepalive_*不存在于容器内。
【问题讨论】:
我有一个在 docker 容器中运行的应用程序,我想设置:tcp_keepalive_intvl 和 tcp_keepalive_time。
我可以在主机系统上更改它并期望 docker(以及里面的所有东西)遵守这些设置吗?
因为/proc/sys/net/ipv4/tcp_keepalive_*不存在于容器内。
【问题讨论】:
尝试查看 Docker 运行文档以在 docker run 命令中使用 --sysctl net.ipv4.xxx 覆盖。请注意--sysctl 不适用于docker service 命令...
【讨论】:
希望在 Rancher 运行的 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 文件系统检查相应的配置。
【讨论】: