Docker - 将 docker 容器桥接到主机网络容器上的 eth 接口

问题描述 投票:0回答:1

在具有静态 IP 地址的 VPS 上运行 Ubuntu 服务器。

它有一个带有主机网络的容器,但是当运行容器时,Ubuntu会删除它的IP并且eth0接口没有IP,然后在容器上设置IP地址(没关系),但问题是容器无法再使用网络。

想要在容器上使用网络,而 Ubuntu 不需要任何 IP 地址或网络连接,因此尝试在 eth0 和 docker0 或 tun0(容器使用的)之间建立桥接接口,但仍然不起作用。

docker运行命令:

docker run -it --name Router --cap-add=NET_ADMIN --device=/dev/net/tun -d --net=host ROS

/etc/network/interfaces 文件内容:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 50.50.50.100
netmask 255.255.255.0

broadcast 50.50.50.100
post-up route add 50.50.50.1 dev eth0
post-up route add default gw 50.50.50.1 dev eth0

# Bridge docker and eth
auto br0
iface br0 inet dhcp
bridge_ports eth0 docker0

service networking restart
保存文件后不起作用。

docker ubuntu networking containers virtualization
1个回答
0
投票

您似乎正在尝试创建一个桥接接口,以允许您的 Docker 容器通过主机的 eth0 接口访问网络。让我们更正您的网络配置。

首先,确保您的 Docker 容器已正确配置为使用桥接口。如果您使用 Docker 的默认桥接网络 (docker0),则不需要在容器内执行任何特殊操作。

现在,让我们在主机上设置桥接接口。按如下方式修改 /etc/network/interfaces 文件:

环回网络接口 自动定位 iface lo inet环回

主要网络接口 自动 eth0 iface eth0 inet 手册

桥接接口 自动br0 iface br0 inet 静态 桥接端口 eth0 地址 50.50.50.100 网络掩码 255.255.255.0 网关 50.50.50.1 dns 名称服务器 8.8.8.8 8.8.4.4

将eth0的配置更改为手动。这可以防止 Ubuntu 直接为 eth0 分配 IP 地址。

创建桥接接口 br0 并为其分配静态 IP 地址 (50.50.50.100)、网络掩码、网关和 DNS 服务器。 bridge_ports eth0 将 eth0 连接到网桥。

进行这些更改后,重新启动网络:

sudo systemctl 重新启动网络

确保您的 Docker 容器使用 --net=host 选项启动,以便它可以通过桥接口访问网络。

docker run -it --name Router --cap-add=NET_ADMIN --device=/dev/net/tun -d --net=host ROS

希望这会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.