我正在尝试在容器中的 /proc/sys/net/core 处重新配置一些网络内核设置。但似乎 docker ubuntu:14.04 中缺少一些选项,因此我无法配置它们。例如:
$ sysctl -w net.core.rmem_max=262144
sysctl: cannot stat /proc/sys/net/core/rmem_max: No such file or directory
我的 docker 中只有几个选项:
在我的主机的 Ubuntu 中:
$ ls /proc/sys/net/core/
bpf_jit_enable message_burst rmem_default xfrm_acq_expires
busy_poll message_cost rmem_max xfrm_aevent_etime
busy_read netdev_budget rps_sock_flow_entries xfrm_aevent_rseqth
default_qdisc netdev_max_backlog somaxconn xfrm_larval_drop
dev_weight netdev_rss_key warnings
flow_limit_cpu_bitmap netdev_tstamp_prequeue wmem_default
flow_limit_table_len optmem_max wmem_max
在我的docker的Ubuntu中:
$ ls /proc/sys/net/core/
somaxconn xfrm_acq_expires xfrm_aevent_etime xfrm_aevent_rseqth xfrm_larval_drop
我尝试使用--net=无/默认(我不想使用主机)或–v /proc/sys/net:/proc/sys/net但什么都没有改变。
我在 kernel.org 上读到了这段内容:“/proc/sys/net...您可能只会看到其中的一些,这取决于您的内核的配置。”
那么有没有什么办法可以获得完整的选择?
谢谢!
答案1
这些文件代表主机网络堆栈的配置,无需--net=host
在容器内创建新的网络堆栈,文件就会被容器文件“覆盖”。
如果您需要访问主机堆栈,您可以考虑将其安装在其他地方,比如说/net using -v /proc/sys/net/:/net
,然后简单地使用echo value > /net/my/file
而不是使用 sysctl。