Manipular o arquivo diretamente é o caminho a seguir.
Se você souber que docker ps
também usa esse arquivo para obter as informações, basta processar o arquivo diretamente no Python.
O uso de subprocess
para chamar docker
custa um processo externo, e um processo externo é sempre caro.
Com um código Python simples:
def get_container_info(container_id):
path = '/var/lib/docker/containers/{}/config.json'.format(container_id)
with open(path, 'r') as f:
d = json.load(f)
return d['ID'], d['Name'], d['NetworkSettings']['Ports']
Em ipython
shell interativo:
%timeit subprocess.check_output('docker ps', shell=True)
10 loops, best of 3: 56.8 ms per loop
%timeit get_container_info('<container_id>')
10000 loops, best of 3: 79.6 µs per loop