首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-py:在IPvlan网络中创建具有特定IP的容器

docker-py:在IPvlan网络中创建具有特定IP的容器
EN

Stack Overflow用户
提问于 2018-08-24 11:37:51
回答 1查看 356关注 0票数 0

我创建了一个带有驱动程序的网络: ipvlan和几个带有特定网关的子网。(约20人)

现在我想要创建带有特定IP的容器,以便它们只分配给ipvlan网络的正确子网!

代码语言:javascript
复制
     dockernetwork = client.networks.get('ipvlan172')
     print "create container with ip "+targetIP
     client.containers.run('myalpine',auto_remove=True,command='ping 192.168.11.11',detach=True,name=targetName)
     dockernetwork.connect(container,ipv4_address=targetIP)
     container.start()

这里发生的是,client.containers.run为容器提供了码头桥网络的ip和通往码头桥的默认网关。然后,dockernetwork.connect为容器的接口提供第二个ip (目标ip)。

如果我将参数network='ipvlan172‘添加到命令中:

代码语言:javascript
复制
client.containers.run('myalpine',network='ipvlan172',auto_remove=True,command='ping 192.168.11.11',detach=True,name=targetName)

创建的容器没有获得我想要的坞桥网络的ip,而是,但是命令的targetIP

代码语言:javascript
复制
dockernetwork.connect(container,ipv4_address=targetIP)

都会被忽视。以便所创建的容器具有ipvlan网络的随机子网的IP

解决这一问题的一种方法是创建一个脚本,该脚本将在容器启动后执行,并删除dockerhost ip并更改默认网关。

还有其他解决办法吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-08-24 12:53:29

好吧,我发现你在这个案子里需要做些什么。

首先,在没有参数network=ipvlanXX的情况下创建容器,这样容器就可以连接到坞桥。

然后将容器连接到您选择的网络,在我的例子中是ipvlan172。

代码语言:javascript
复制
dockernetwork.connect(container,ipv4_address=targetIP)

之后,您断开码头桥接网络的容器。

代码语言:javascript
复制
network_dockerbridge.disconnect(container,force=True)

最后启动容器。

代码语言:javascript
复制
container.start()

所创建的容器现在具有正确的ip,并使用ipvlan网络正确子网的网关。

最好在dockerpy模块的运行/创建实现中有一个ipv4 4/ipv4 6参数。

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

https://stackoverflow.com/questions/52003638

复制
相关文章

相似问题

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