首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改扩展坞网桥的IP地址池

更改扩展坞网桥的IP地址池
EN

Stack Overflow用户
提问于 2017-02-17 02:32:25
回答 3查看 4.9K关注 0票数 3

我想为码头容器的子网设置自定义的IP池。为此,我遵循了这个已停止的docker守护进程,删除了docker0接口并使用自定义NetworkId重新创建

代码语言:javascript
复制
systemctl stop docker
ip link del docker0

已使用NetworkManager重新创建docker0虚拟网桥接口并将其打开。

代码语言:javascript
复制
ant@ant ~> nmcli con up <UID>
ant@ant ~> ip addr
111: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 3e:ff:1b:ce:e4:a4 brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.1/20 brd 172.20.15.255 scope global docker0
       valid_lft forever preferred_lft forever

现在当我再次启动docker守护进程时,

代码语言:javascript
复制
ant@ant ~> systemctl start docker
ant@ant ~> ip addr
111: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 3e:ff:1b:ce:e4:a4 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

我设置的子网是172.20.0.1/20,但只要我启动docker守护进程,docker0接口的子网就会更改为172.17.0.1/16。我在局域网中有一些想要访问的内网in,它们位于该子网中。

是否有更好的方法来配置网桥接口?

EN

回答 3

Stack Overflow用户

发布于 2017-02-17 04:15:42

Jordan的回答创建了一个子网工作,然后在容器上运行应用程序时指定该工作。这有助于限制运行容器时使用的IP池。

但是,限制docker守护程序创建的docker0虚拟网桥接口的IP池无济于事。我正在寻找的答案如下:

Docker运行一个管理容器的守护进程。此守护进程创建一个接口docker0,该接口默认配置为使用172.17.0.1/16子网进行操作。因此,我们需要配置守护进程以使用所需的子网。

dockerd用于运行docker守护程序。它具有--bip网桥IP选项(请参阅dockerd)。

代码语言:javascript
复制
dockerd --bid=172.20.0.1/20

但是大多数系统都使用各自的服务管理器来运行docker来实现这一点。在这种情况下,docker在/etc/docker/daemon.json中有一个docker守护进程配置文件。Docker linux daemon configuration,所以如果daemon.json不存在,就创建它并添加bip

代码语言:javascript
复制
{
    "bip":"172.30.0.1/20"
}
票数 5
EN

Stack Overflow用户

发布于 2017-02-17 03:34:22

通过创建特定的桥接容器网络,您应该能够使用此命令定义ip地址。documentation是一个很好的入口点。

代码语言:javascript
复制
$ docker network create --driver bridge --subnet 172.20.0.1/20 subnet
$ docker run --name app --network subnet <container>

您的所有容器现在都应该在所选子网中具有ip地址。

此外,official doc还描述了如何创建自己的网桥连接。

票数 0
EN

Stack Overflow用户

发布于 2017-02-17 17:58:06

如果您更改docker0网桥的子网,它将保持不变。对于特定的ip用途,请使用新的网络创建。docker network在网络中运行容器后创建--subnet=172.20.0.1/20foo。docker运行-itd --net foo image_name假设你想为容器提供特定的ip。使用docker运行-itd --net foo --ip 172.20.0.12 image_name

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42281996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档