Docker 容器无法访问主机的接口

Docker container has no access to host's interfaces

我正在尝试使用主机网络选项从 Docker 容器内部访问主机的网络接口。 出于调试目的,我尝试使用 docker run --network host --rm -it alpine:3.9 运行 一个干净的 Alpine 容器。 运行 ip link returns

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65520 qdisc pfifo_fast state UP qlen 1000
    link/ether 62:db:1e:6b:52:fe brd ff:ff:ff:ff:ff:ff
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:9a:e6:96:40 brd ff:ff:ff:ff:ff:ff

我希望在我的主机上使用所有接口(lo,两个有线接口和一个无线接口,docker)得到相同的结果。为什么不是这样?

更新以包含各种输出:

dpkg -l | grep docker:

ii  docker-ce                            5:20.10.12~3-0~raspbian-bullseye armhf        Docker: the open-source application container engine
ii  docker-ce-cli                        5:20.10.12~3-0~raspbian-bullseye armhf        Docker CLI: the open-source application container engine
ii  docker-ce-rootless-extras            5:20.10.12~3-0~raspbian-bullseye armhf        Rootless support for Docker.

tail -4 /proc/cpuinfo:

Hardware    : BCM2711
Revision    : d03114
Serial      : 1000000025d45b15
Model       : Raspberry Pi 4 Model B Rev 1.4

cat /etc/debian_version:

11.2

使用 sudo 执行命令解决了这个问题。

dockerd-rootless-setuptool.sh 安装后执行没有 sudorun 命令会导致所述问题,即网络接口不可用,而是创建一个虚拟接口。