如何有效地通过SSH从服务器上运行的所有Docker容器获取信息?

我需要通过SSH获取在远程服务器上运行的所有Docker容器的信息。 可能有几百个docker集装箱同时运行。 什么是最有效的方式来获得所有的信息? Rest API不是一个选项。 我需要做的是

ssh root@blah.com execute docker container ls # get containers info for container_id in containers: execute docker inspect container_id 

我不能将命令的输出写入文件。

  1. 多个SSH连接? 我怎样才能和paramiko做到这一点?
  2. 通过一个SSH连接同时运行多个命令? 这可以通过paramiko完成吗?

您可以使用docker-py运行Python脚本

这会更快,因为只有一个检查所有容器的过程比每个容器运行docker更好。

PD:当然,这可以用paramiko完成。

 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列表后,可以使用multithreading/asynchronous来执行ssh命令docker docker inspect ContainerID ,我认为paramiko可以处理它,但是可能会很费时。