2017-02-17 15 views
1

Мне нужно получить информацию обо всех контейнерах докеров, работающих на удаленном сервере через SSH. Может быть несколько сотен докеров, работающих одновременно. Какой самый эффективный способ получить всю информацию? Rest API не является вариантом. Что мне нужно сделать, этоКак эффективно получать информацию из всех контейнеров Docker, работающих на сервере через SSH?

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

Я не могу писать вывода команд в файлы.

  1. несколько SSH-соединений? Как я могу это сделать с парамико?
  2. одновременное выполнение нескольких команд через одно соединение SSH? Можно ли это сделать через парамико?

ответ

0

Вы можете запустить скрипт на Python с использованием docker-py

Это будет быстрее, потому что только один процесс, чтобы осмотреть все контейнеры лучше, чем запускать докер для каждого из них.

PD: И, конечно, это можно сделать с помощью paramiko.

+0

спасибо. но не докер-ру называют остальной 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() 

После списка идентификаторов прибудете контейнера, вы можете использовать несколько нитей/Asynchronous для EXEC команду SSH docker inspect ContainerID, я думаю paramiko может справиться, но может быть отнимающим много времени.