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