Featured image of post Docker 容器内部开启Iptables日志记录

Docker 容器内部开启Iptables日志记录

最近没事在折腾Docker,其中一个项目需要在容器内部获取 iptables 日志,然后使用额外的程序进行分析,结果折腾半天容器内部始终拿不到日志文件(一般没意外的话会在/var/log/messages

于是去外网转了一圈回来终于发现了问题所在,在13年内核的一次更新中提到:Disabled from containers until syslog ns is supported

详情见:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=69b34fb996b2eee3970548cf6eb516d3ecb5eeed

幸运的是,自内核版本kernel 4.11之后,这个更新为了一个可选项,默认关闭。

详情见:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=2851940ffee313e0ff12540a8e11a8c54dea9c65

所以解决办法就是在宿主机执行:

1
2
3

echo "net.netfilter.nf_log_all_netns = 1">> /etc/sysctl.conf
sysctl -p

注意:Linux内核官方之所以改为默认关闭是基于安全策略的考量,防止log被滥用,所以你如果强制开启,一定要多注意。

参考文章

本文采用 CC BY 4.0 协议,转载请署名并注明出处。
最后更新于 2022-11-24 12:28:36
使用 Hugo 构建
主题 StackJimmy 设计