2017-02-17 10 views
1

SSH를 통해 원격 서버에서 실행중인 모든 도커 컨테이너 정보를 얻어야합니다. 동시에 작동하는 수백 개의 도커 컨테이너가있을 수 있습니다. 모든 정보를 얻는 가장 효율적인 방법은 무엇입니까? 나머지 API는 옵션이 아닙니다. 내가 뭘해야 내가 파일에 명령의 출력을 쓸 수 없습니다SSH를 통해 서버에서 실행되는 모든 Docker 컨테이너에서 효율적으로 정보를 얻는 방법은 무엇입니까?

ssh [email protected] 
execute docker container ls 
# get containers info 
for container_id in containers: 
    execute docker inspect container_id 

입니다.

  1. 다중 SSH 연결? paramiko와 함께이 작업을 수행하려면 어떻게해야합니까?
  2. 하나의 SSH 연결을 통해 동시에 여러 명령을 실행하고 있습니까? paramiko를 통해이 작업을 수행 할 수 있습니까? 각각에 대해 고정 표시기을 실행하는 것보다

답변

0

당신은 하나의 프로세스 만이 더 나은 모든 컨테이너를 검사하기 때문에 docker-py

그것은 더 빠른 것 사용하여 파이썬 스크립트를 실행할 수 있습니다.

PD : 물론, paramiko으로 처리 할 수 ​​있습니다.

+0

감사합니다. 그러나 docker-py는 나머지 API를 현장에서 호출하지 않습니까? – user3837980

+0

예. 하지만 Python 스크립트는 서버에서 실행 중일 것입니다. –

+0

흠, 대상 서버에 아무 것도 설치할 수 없습니다. – user3837980

0
import paramiko 

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(Ip, Port, UserName, PassWord) 
stdin, stdout, stderr = ssh.exec_command("docker ps | sed -n '2,$p' |awk '{print $1}'") 
#docker container id list 
conIdList = stdout.readlines() 

GET 컨테이너 ID 목록 후에는 멀티 스레드를 사용할 수 있습니다/비동기 내가 paramiko 그것을 다룰 수 있다고 생각 ssh 명령 docker inspect ContainerID을 간부 인,하지만 시간이 소요 될 수 있습니다.