0

我开始在 python 中使用 Docker API 并遇到了时间执行问题。运行以下代码时,构建单个网络需要 15 秒。

def createDockerNetwork():
nb_nw = 20
logging.info("*** Creating bridges: ")
for i in range(0,nb_nw):
    logging.info("   - bridge: nw_"+str(i))
    base = '10.'+str(i/255)+'.'+str(i%255)
    sbnet = base + '.0/24'
    iprange = base + '.0/24'
    gw = base + '.254'
    options = dict([('com.docker.network.bridge.enable_icc','true'), ('com.docker.network.bridge.name','br_'+str(i))])
    ipam_config = docker.types.IPAMPool(subnet=sbnet, iprange=iprange, gateway=gw)
    try:
        client.networks.create('nw_'+str(i), driver='bridge', options=options, ipam = ipam_config)
    except docker.errors.APIError as error:
        logging.error(" Error while creating bridge no:"+str(i)+" : \n  ---> {0}".format(error))
return 0

2018-09-05 09:49:05,352 - 根 - 信息 - *** 创建网桥:

2018-09-05 09:49:05,352 nw_0

2018-09-05 09:49:20,420 nw_1

2018-09-05 09:49:35,503 nw_2

2018-09-05 09:49:50,557 nw_3

2018-09-05 09:50:05,616 nw_4

...

2018-09-05 09:53:51,693 nw_19

奇怪的是,当我使用以下命令直接在终端内运行相同的命令时:

docker network create nw_simu -d bridge --opt com.docker.network.bridge.enable_icc=true --opt com.docker.network.bridge.name=nw_1 --subnet=10.0.0.0/24 --ip-range= 10.0.0.0/24 --gateway=10.0.0.254

它立即运行。所以我的问题是:

你们中的一些人在使用这个 API 时是否有同样的问题?我可以做些什么来加快这个过程吗?(我已经在实现例程以便以并行方式运行它)

任何提示表示赞赏!

版本:Python 2.7.15rc1、Docker 18.06.1-ce、Ubuntu 18.04.1 LTS

4

1 回答 1

0

事实证明,我在代码中犯了一个错误,正确的做法如下:

ipam_pool = docker.types.IPAMPool(subnet=sbnet, iprange=iprange, gateway=gw)
ipam_config = docker.types.IPAMConfig(pool_configs=[ipam_pool])
try:
client.networks.create('nw_'+str(i), driver='bridge', options=options, ipam = ipam_config)
except ..... as error:

因此它可以正常工作

于 2018-09-06T07:47:07.353 回答