QEMU macvtap (works)
If I use following network config:
network: version: 2 renderer: networkd ethernets: eno1: dhcp4: yes dhcp6: yes
And KVM client network use 'Host device eno1:macvtap', both IPv4, IPv6 works.
tcpdump port 67 or port 68 -i eno1 -nN will show dhcp request, tcpdump on my dhcp server also see the incoming request.
QEMU with host bridge (not work)
However if I use a host bridge network config:
network: version: 2 renderer: networkd ethernets: eno1: dhcp4: false dhcp6: false optional: true link-local:  bridges: br0: parameters: stp: false forward-delay: 0 interfaces: - eno1 dhcp4: true dhcp6: true
And KVM client network use 'Bridge (Host device eno1)', then only IPv6 works, IPv4 cannot get DHCP.
tcpdump port 67 or port 68 -i br0 -nN will show dhcp request, but tcpdump on my dhcp server don't see them.
Only dhcp is not working though. If I set Ipv4 address and route manually, both incoming and out going IPv4 traffic work.
I discover that if I disable docker completely:
sudo systemctl diable docker.service containerd.service reboot
Then qemu with host bridge will work perfectly.
How can I use qemu with host bridge while running docker?