2017-02-17 45 views
1

我需要通過SSH獲取在遠程服務器上運行的所有Docker容器的信息。可能有數百個碼頭集裝箱同時運行。什麼是獲取所有信息的最有效方式? Rest 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

這將是更快,因爲只有一個進程來檢查所有容器是更好的一個Python腳本比運行泊塢窗的每一個。

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() 

之後獲取的容器ID列表,您可以使用多線程/異步給exec ssh命令docker inspect ContainerID,我想的paramiko可以對付它,但可能是一個耗費時間的。

相關問題