2017-07-27 80 views
1

我想我知道如何在docker中分配静态ip。 这样的事情似乎工作:如何在Docker-py中分配-static-ip-to-docker-container

搬运工运行 - 它--rm --net = BR0 --cap加= NET_ADMIN --ip = 172.27.153.11 mbussim

的问题是码头工人做这个-py,我认为这只是docker的一个python docker接口。

原则,搬运工-PY试图跟随搬运工铅:

你可能会认为像这样的工作:

选项= { “分离”:的确, “IP”:“ 172.27.153.11" , # “删除”:的确, “名”: “mbussim_” + STR(计数), “cap_add”: “NET_ADMIN” }}

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

但是,这是行不通的。也许,这是不可能的docker-py?

回答

0

以下这似乎工作。 首先创建一个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") 

您的容器现在有两个接口eth0用于默认网络,而eth1用于mynet接口。 我相信肯定有一个更简单的方法来实现这一点。