虚拟机运行Docker出现promiscuous mode进入/退出报错如何解决
混杂模式日志提示的产生原因
Docker 默认使用桥接网络模式,当容器启动、停止或网络配置变更时,宿主机上的 Docker 网桥(默认是 docker0)会自动调整网络接口的数据包转发规则,这个过程会短暂触发网卡进入/退出混杂模式,属于正常行为,本身不会影响业务运行。
如果你的环境中频繁出现该日志,一般是短时间内有大量容器启停、或是第三方网络插件(如 Calico、Flannel)在同步网络规则导致。
解决方案
- 方案1:排查异常重启的容器
先执行docker ps -a查看是否有异常崩溃反复重启的容器,如有先修复容器本身的故障,即可大幅减少日志产生。 - 方案2:禁用网桥的混杂模式自动切换
执行以下命令手动设置对应网桥永久启用混杂模式,避免反复切换产生日志:
注意:该配置不会影响网络安全性,Docker网桥本身就需要转发所有挂载的容器接口的数据包,启用永久混杂模式和动态切换的实际效果完全一致# 默认Docker网桥是docker0,使用第三方CNI插件时替换为对应的网桥名称如cni0 # 临时生效 ip link set docker0 promisc on # 永久生效(Ubuntu/Debian 系统可修改netplan配置,其他发行版对应修改系统网络配置文件即可) # 编辑/etc/netplan/下的.yaml配置文件,在docker0的配置段添加 link: promiscuous: on # 配置完成后执行 netplan apply 生效 - 方案3:调整内核日志打印级别屏蔽通知类日志
如果不想修改网络配置,可调整内核日志打印级别,屏蔽该类通知性质的日志输出:# 临时调整,只打印警告及以上级别的日志 echo 4 > /proc/sys/kernel/printk # 永久生效,编辑/etc/sysctl.conf添加如下配置 # kernel.printk = 4 4 1 7 # 保存后执行 sysctl -p 生效
内容的提问来源于stack exchange,提问作者nima
相关产品推荐
相关产品推荐

