[英]How to change ip address of docker0 bridge interface on Docker Toolbox
[英]Change IP address pool of docker bridge
我想为docker容器的子网设置自定义IP池。 为此,我按照这个停止的docker0
守护进程,删除了docker0
接口并使用自定义NetworkId重新创建
systemctl stop docker
ip link del docker0
使用NetworkManager重新创建docker0
虚拟网桥接口并将其打开。
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守护进程时,
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
但是一旦启动docker0
守护程序, docker0
接口的子网就会更改为172.17.0.1/16
。 我在局域网中有一些我希望访问的私有IP,它位于该子网中。
有没有更好的方法来配置网桥接口?
Jordan的答案创建了一个子网工作,然后在容器上运行应用程序时指定该子网工作。 这有助于限制运行容器时使用的IP池。
但是,限制docker0
守护程序创建的docker0
虚拟桥接口的IP池没有任何帮助。 我正在寻找的答案如下:
Docker运行一个管理容器的守护进程。 该守护进程创建一个接口docker0
,默认情况下配置为使用172.17.0.1/16
子网进行操作。 因此,我们需要配置守护程序以使用所需的子网。
dockerd
用于运行dockerd
守护程序。 它有--bip
bridge IP选项(见dockerd )。
dockerd --bid=172.20.0.1/20
但是大多数系统使用各自的服务管理器运行docker来实现这一点。 在这种情况下, /etc/docker/daemon.json
在/etc/docker/daemon.json
有一个/etc/docker/daemon.json
守护程序配置文件。 Docker linux守护进程配置如果它还不存在则创建daemon.json并添加bip
。
{
"bip":"172.30.0.1/20"
}
如果更改docker0网桥的子网,它将保持不变。 对于特定的ip目的,使用新的网络创建。 docker network create --subnet = 172.20.0.1 / 20 foo在该网络中运行容器之后。 docker run -itd --net foo image_name假设您要为容器指定特定的ip。 使用docker run -itd --net foo --ip 172.20.0.12 image_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.