更改Docker容器的IP地址

11
我的网络地址为10.0.0.0,但当我启动docker容器时,它们会有不同的IP地址(172.17.42.1)。
如何使我的容器在相同的10.0.0.0网络上启动?
我已经配置了静态的br0,并希望docker0共享相同的IP地址范围,这样它就可以在相同的网络上为容器分配IP地址。

1
这个对我很有帮助:https://groups.google.com/forum/#!topic/docker-user/P93kOO7-QvA - jangorecki
4个回答

7
我希望这个链接能帮助你: http://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/

简而言之,只需将以下内容添加到 /etc/network/interfaces 即可:
auto docker0
iface docker0 inet static
    address 172.30.0.1
    netmask 255.255.255.0
    bridge_ports dummy0
    bridge_stp off
    bridge_fd 0

重新启动界面,或者重启电脑。

ifdown docker0
ifup docker0

当我执行第三步 "ip addr add 172.30.1.1/20 dev br0" 并添加自己的 IP 范围时,出现了错误 "Error: an inet prefix is expected rather than "10.0.0.100/135"." 你知道如何解决吗? - user3001829
斜杠后面的值是子网掩码的位数。IP地址中没有135个位。也许你想说的是/24或/27?(另外,.100不是子网的好基础地址。) - Jon Watte
请勿只回答链接 - Asara
我有许多来自不同用户的现有Docker容器。我需要删除所有现有容器吗?还是我可以只重启所有容器以使此更改生效? - Raven Cheuk
如果容器是CentOS?!?如果容器是Ubuntu/Debian没有那些文件/工具(interfaces,ifup,ifdown)?!? - THESorcerer

6

已经接受的答案并不是真正的答案,而只是一个链接。所以我将提供适合我的解决方案。需要注意的是,该解决方案可能会被 Docker 更新覆盖。在升级软件包时,您应该被要求替换您的 Docker 配置。配置路径适用于 Ubuntu 15.10。

sudo vim /etc/default/docker

在文件中添加这行代码

DOCKER_OPTS="--bip=10.66.33.10/24"

然后重新启动
重新启动后启动一个容器

docker run -it --name t2 jangorecki/r-base-dev /bin/bash

并检查容器的IP地址

docker inspect --format '{{ .NetworkSettings.IPAddress }}' t2

1
也许更好的做法是建议编辑已经被接受的答案,而不是重复回答? - Evedel
@Evedel,请在做出相似性判断之前阅读其他答案中的链接。这是一种不同的解决方案。 - jangorecki

1

在我的Centos容器上,我这样做:

docker exec -it c1 bash -c "echo -e 'IPADDR=172.17.0.4 \n HOSTNAME=c1' >> /etc/sysconfig/network-scripts/ifcfg-eth0; /etc/init.d/network restart";

0

真正的答案是这个:...并且已经在我的测试中工作。

如何在创建后更改docker的IP地址?

另外,标记为解决方案的答案假定容器是某个发行版(基于debian/ubuntu),并且已经安装了许多网络工具!这种假设是所有错误的根源...


1
我喜欢链接帖子上的答案,但您能否将该答案的重要细节复制到此帖子上(保留链接)?在这里提供数据可以使您的答案即使发生与链接主题相关的问题也仍然有用。 - JellicleCat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接