2

我想我知道如何在 docker 中分配静态 ip。像这样的东西似乎有效:

docker run -it --rm --net=br0 --cap-add=NET_ADMIN --ip=172.27.153.11 mbussim

问题是在 docker-py 中执行此操作,我认为这只是 docker 的 python docker 接口。

原则上,docker-py 尝试遵循 docker 的引导:

你会认为这样的事情会起作用:

选项= {“分离”:真,“ip”:“172.27.153.11”,#“删除”:真,“名称”:“mbussim_”+ str(计数),“cap_add”:“NET_ADMIN”}}

       self.dockcon = self.dockerclient.containers.run(self.dimg, **options)

但是,这不起作用。也许,这不可能吧 docker-py?

4

1 回答 1

1

遵循这似乎有效。首先创建一个ip子网:

ipam_pool = docker.types.IPAMPool(
    subnet='192.168.0.0/16',
    gateway='192.168.0.254'
)
ipam_config = docker.types.IPAMConfig(
    pool_configs=[ipam_pool]
)
client.networks.create(
    "mynet",
    driver="bridge",
    ipam=ipam_config
)

现在以通常的方式创建容器:

container = client.containers.run("ubuntu", ["sh", "-c", command()], detach=True)

默认情况下,这会将容器附加到桥接网络。现在将您的容器连接到您的网络并从子网分配您想要的静态 IP。

client.networks.get("mynet").connect(container, ipv4_address="192.168.10.5")

您的容器现在将有 2 个接口 eth0 用于默认网络,而 eth1 具有 mynet 接口。我确信必须有一种更简单的方法来实现这一点。

于 2017-08-16T21:47:43.743 回答