如何在docker容器中sysctl网络相关配置

如何在docker容器中sysctl网络相关配置

我使用17.09.0-ce docker服务和centos7.2.1511进行测试并尝试更改网络相关的系统配置但失败:

我使用一个文件来覆盖所有配置:

net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 200000
net.core.netdev_max_backlog = 200000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152

sysctl -p config

sysctl: cannot stat /proc/sys/net/ipv4/tcp_syncookies: No such file or directory
sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: No such file or directory
sysctl: cannot stat /proc/sys/net/ipv4/tcp_max_syn_backlog: No such file or directory
sysctl: cannot stat /proc/sys/net/core/netdev_max_backlog: No such file or directory
sysctl: cannot stat /proc/sys/net/core/rmem_max: No such file or directory
sysctl: cannot stat /proc/sys/net/core/wmem_max: No such file or directory

在容器中我确实没有看到这些文件,docker 是否不支持更改上述配置或者我做了错误的操作?

答案1

使用docker run --sysctl your.config.parameter。据我记得,--sysctl多次使用多个选项。请记住,有些 sysctl 参数无法使用 docker 设置,因为它们是全局的。

传统样式配置(写入/sys|/proc)在容器内不起作用,除非您使用类似的方法ip netns exec ...或其他方法进入正确的命名空间。

答案2

Docker 不是虚拟机,因此它不会像虚拟机那样提供所有架构。 docker 容器的底层基础设施是在主机系统上配置的,而不是在容器本身内配置的。

请参阅docker 概述文档docker 网络文档更多细节。

更彻底的定制选项记录在https://docs.docker.com/engine/userguide/networking/default_network/container-communication

相关内容