gpt4 book ai didi

Docker 网络从默认网桥迁移

转载 作者:行者123 更新时间:2023-12-02 19:06:52 25 4
gpt4 key购买 nike

我有一堆在默认桥接网络上运行的 docker 容器,它们需要相互通信。

我想将一些容器移动到单独的用户定义网络,以便我可以指定它们的 IP 地址。

有没有办法做到这一点,而不必取下/复制所有容器并将它们移动到另一个网络,或者这是唯一的方法?

最佳答案

可以在容器处于事件状态时创建网络和连接容器。如果进程正在监听特定 IP 地址而不是所有接口(interface)(*::),您可能仍需要停止/启动进程

创建网络

docker network create \
--driver=bridge \
--subnet=192.168.38.0/24 \
--gateway=172.16.238.1 \
<NETWORK>

连接一个容器
docker network connect \
--ip 192.168.38.14 \
<NETWORK> \
<CONTAINER>

断开原来的网络
 docker network disconnect <OLDNETWORK> <CONTAINER>

例子

容器前 eth0在默认桥接网络上
→ docker exec $CONTAINER ip ad sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
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
15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever

之后, eth1已添加,不再有 eth0
→ docker exec $CONTAINER ip ad sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
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
17: eth1@if18: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:c0:a8:26:0e brd ff:ff:ff:ff:ff:ff
inet 192.168.38.14/24 brd 192.168.38.255 scope global eth1
valid_lft forever preferred_lft forever

关于Docker 网络从默认网桥迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49372592/

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