gpt4 book ai didi

static - docker 具有静态地址的多个容器

转载 作者:行者123 更新时间:2023-12-04 14:48:22 24 4
gpt4 key购买 nike

我正在从事一个通常使用虚拟机实现的项目。但我想改用 docker 容器,以便练习和学习新东西。

所以这就是我想做的事情:创建在同一台主机上运行的多个容器,具有静态 ip 地址,彼此连接(但不一定连接到外部世界)。换句话说,我想模拟一种独立网络,由连接到同一交换机的多台计算机组成。

我尝试更改容器中的/etc/network/interfaces 来为 eth0、docker0 等设置静态 IP 地址,但它不会以任何方式影响系统。我尝试使用 --net=host, --cap-add=NET_ADMIN 但它没有帮助。

这让我发疯。求救!谢谢

编辑:我没有说的重要事情:我正在使用我的 Mac Book Air,并且正在运行 boot2docker(它创建了一个运行 docker 的虚拟机)。当我使用“docker run -i -t ubuntu/bin/bash”运行图像时,我没有 docker0 作为接口(interface):在容器中运行“ip a”仅显示 lo 和 eth0。

最佳答案

为什么要尝试 --net=host?此选项完全禁用网络隔离,并在默认网络命名空间中运行容器。这意味着 docker 容器可以看到所有主机网络接口(interface)。我认为这不是您的选择。

有一点很重要,docker 如何处理孤立的网络。首先,它创建名为 docker0 的网桥(至少在默认情况下是这样)。每次当您启动带有隔离网络的容器时(即没有 --net=host),docker 都会创建一对 veth 接口(interface)。 docker 提供给容器的接口(interface)之一(如果您将在容器中运行 ip link list,您将完全看到这个虚拟 接口(interface))。另一个 docker 插入网桥 docker0(顺便说一下,您可以通过将“-b ${BRIDGE}”选项传递给 docker 守护进程来说明要使用哪个网桥)。

我建议您阅读 article about docker bridgesthis one about network namespaces .

尝试使用隔离网络运行容器,然后分配您喜欢的静态 IP。但请注意路由 - 主机必须有到子网的路由,您的容器在其中运行。最简单的方法(对我来说也是唯一合适的方法)- 从与 docker 桥相同的子网为您分配容器 IP。

下面的例子很适合我。

user@host$ ip addr
docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::5484:7aff:fefe:9799/64 scope link
valid_lft forever preferred_lft forever

root@docker-1# ip addr
eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever


root@docker-2# ip addr
eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:5/64 scope link
valid_lft forever preferred_lft forever

关于static - docker 具有静态地址的多个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26817009/

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