将 Docker 设置为使用手动创建的网桥后,Docker 容器失去 Internet 访问

将 Docker 设置为使用手动创建的网桥后,Docker 容器失去 Internet 访问

我需要 QEMU/KVM 虚拟机的桥接网络。但是,如果我只安装 Docker,虚拟机就会失去 Internet 访问权限。我找到的解决方案是通过编辑让 Docker 使用现有的桥接/etc/docker/daemon.json。但是,Docker 容器似乎失去了 Internet 访问权限。如何让 Docker 容器可以访问 Internet?

以下是我在 VirtualBox 中重现该问题的具体步骤。

  1. 安装 Manjaro 并更新所有内容。
  2. 安装并启动 Docker
  3. 创建 Ubuntu 容器并打开其 shell
  4. 通过发出“apt update”来验证其互联网访问是否正常
  5. 创建桥接网络并向其添加以太网连接。
  6. 删除现有的docker0Wired connection1
  7. /etc/docker/daemon.json用 进行创建{"bridge": "bridge0"}
  8. 重启
  9. 删除现有容器并重新创建 Ubuntu 容器
  10. 打开外壳并输入apt update
  11. 容器无法连接到互联网。

如果以上内容不清楚,我已经录制了整个操作,没有进行任何编辑。屏幕录制可在以下位置获取:https://filebin.net/94bjw3b7na8ydkyk


我下载了 nicolaka/netshoot 容器并尝试打印该容器的一些网络信息。它似乎有一个错误的 IP 192.168.0.1。这是路由器的 IP,所以我认为它不可能有这个 IP。以下是输出:

配置文件

eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:00:01  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:227 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:12392 (12.1 KiB)  TX bytes:986 (986.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:592 (592.0 B)  TX bytes:592 (592.0 B)

知识产权

default via 192.168.0.214 dev eth0 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1 

IP 地址

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
7: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:c0:a8:00:01 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.0.1/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever

这是ip addr主机(Docker 容器正在运行的虚拟机)

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: bridge0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 3a:ac:8e:f2:ec:ac brd ff:ff:ff:ff:ff:ff
3: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:68:bd:fa brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.0.148/24 brd 192.168.0.255 scope global dynamic noprefixroute ens32
       valid_lft 43179sec preferred_lft 43179sec
    inet6 fd1b:715e:43ca::33b/128 scope global dynamic noprefixroute 
       valid_lft 43181sec preferred_lft 43181sec
    inet6 fd1b:715e:43ca:0:e14d:c46:1e9d:806a/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::23b0:d83c:a70d:3800/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

这是ip r主机

default via 192.168.0.1 dev ens32 proto dhcp src 192.168.0.148 metric 100 
192.168.0.0/24 dev bridge0 proto kernel scope link src 192.168.0.214 
192.168.0.0/24 dev ens32 proto kernel scope link src 192.168.0.148 metric 100 

相关内容