docker ps
<ID> <name> <port>
実行中のドッカーなどのリストを提供します。
でも同じ情報を得ることができます/var/lib/docker/containers/<ID>/config.json
。 (ここで、IDは上記のコマンドのIDと同じです。IDが多いほど、ディレクトリも増えます。)
Pythonスクリプトを使用していくつかの値を取得する必要があります。したがって、値suprocess.check_output("<CMD>", shell=True)
または検索のより効率的な方法は、コマンドf=open(<FILE PATH>,'r')
でもファイルを使用して情報を取得することを理解しています。docker ps
docker ps
このリストを公開すると、リストが長くなったり短くなったりすることがあります。それでは、全体的な観点からどちらが高価ですか?どちらが動作しますか?ありがとうございます!
答え1
ファイルを直接操作するのが正しいアプローチです。
docker ps
ファイルが情報を取得するためにも使用されることがわかっている場合は、Pythonが直接ファイルを処理するだけです。
subprocess
呼び出しを使用するとdocker
外部プロセスのコストがかかり、外部プロセスをフォークすると常にコストがかかります。
簡単なPythonコードを使う:
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']
ipython
インタラクティブシェルから:
%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