ARP not working in docker container

I’m facing issue with ARP request/response from ubuntu container with windows platform as docker host.

The experimentation is performed with very basic setup.

The following network mode is available as part of docker desktop installation in windows.

D:\Docker\ubuntu>docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8375175c22dc   bridge    bridge    local
1b9942f6e958   host      host      local
f15c87f3e568   none      null      local

Pull latest ubuntu image (FROM ubuntu:latest) and start running it using docker run command

D:\Docker\ubuntu>docker run -i -t dockertest /bin/bash

root@4895113a218d:~#

The ubuntu container is running in bridge network mode and could see following interface available within container

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 4129  bytes 5898871 (5.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1674  bytes 95577 (95.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

I then installed nmap within ubuntu container and tried sending ARP request to one of the node in the local network using nping command. But, there is no response from that particular node (192.168.10.207) even through its accessible from windows host.

root@1fdc2acb5928:~# nping --arp-type ARP 192.168.10.207

Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2022-03-21 12:39 UTC
SENT (0.0770s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (1.0774s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (2.0789s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (3.0803s) ARP who has 192.168.10.207? Tell 172.17.0.2
SENT (4.0819s) ARP who has 192.168.10.207? Tell 172.17.0.2

Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 5 (210B) | Rcvd: 0 (0B) | Lost: 5 (100.00%)
Nping done: 1 IP address pinged in 5.16 seconds

Alternatively, I tried with ping command and its working absolutely fine. May be its Layer 3 protocol.

root@1fdc2acb5928:~# ping 192.168.10.207

PING 192.168.10.207 (192.168.10.207) 56(84) bytes of data.
64 bytes from 192.168.10.207: icmp_seq=1 ttl=37 time=8.00 ms
64 bytes from 192.168.10.207: icmp_seq=2 ttl=37 time=5.79 ms
64 bytes from 192.168.10.207: icmp_seq=3 ttl=37 time=5.97 ms

System Configuration

  • Docker Host: Windows 10
  • Docker Image: ubuntu:latest
  • Application used for ARP verification: nping (installed via nmap package)

Why ARP not working in ubuntu docker container with network mode selected as bridge? Does Layer 2 protocols has any issue in bridge network mode?

Can somebody help me to resolve this issue?