gpt4 book ai didi

linux - 如何使用外部网关在其网络中运行 docker 容器?

转载 作者:太空狗 更新时间:2023-10-29 11:17:42 24 4
gpt4 key购买 nike

我有一些使用 docker-compose 管理的图像,我需要在与主机(运行 Ubuntu 16)不同的网络中运行它们。

主机有 IP 10.0.1.19/24 和网关 10.0.1.1。

这是我的 docker-compose.yml:

version: '2'
services:
db:
...
networks:
ab-net:
ipv4_address: 10.1.2.250
...

app:
...
networks:
ab-net:
ipv4_address: 10.1.2.11
...

networks:
ab-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.1.2.0/23
gateway: 10.1.2.1

防火墙(不受我控制且无法更改)允许通过容器的网关 10.1.2.1(即防火墙本身)直接传入连接到 10.1.2.0/23,而不是主机。

使用该配置运行容器,docker 在 IP 为 10.1.2.1 的主机上配置一个 br-interface;因此在网络上有两台具有相同 IP 的机器:主机和防火墙/网关。

容器可以访问互联网,它们可以看到彼此,并且我可以从主机连接到容器。

我怎样才能让这个场景发挥作用?在这个阶段,如果可能的话,我宁愿不使用任何编排工具。

最佳答案

我发现唯一的选择是使用(当前)实验性功能“Ipvlan Network”。

The Linux implementations are extremely lightweight because rather than using the traditional Linux bridge for isolation, they are simply associated to a Linux Ethernet interface or sub-interface to enforce separation between networks and connectivity to the physical network.

documentation非常大,不能在这里复制,但是这些是我必须运行的命令来实现:

echo 8021q >> /etc/modules
modprobe 8021q
apt-get install vlan
edit /etc/network/interfaces

auto eth1.2320
iface eth1.2320 inet manual
vlan-raw-device eth1

auto eth1.2321
iface eth1.2321 inet manual
vlan-raw-device eth1

auto eth1.2322
iface eth1.2322 inet manual
vlan-raw-device eth1

auto eth1.2323
iface eth1.2323 inet manual
vlan-raw-device eth1

auto eth1.2324
iface eth1.2324 inet manual
vlan-raw-device eth1

/etc/init.d/networking restart

关于linux - 如何使用外部网关在其网络中运行 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39871228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com