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

2024-04-26 05:21:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要通过SSH获取远程服务器上运行的所有docker容器的信息。可能有几百个docker容器同时运行。获取所有信息的最有效方法是什么? restapi不是一个选项。 我要做的是

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

我无法将命令的输出写入文件。在

  1. 多个SSH连接?我怎么能和帕拉米科做这件事?在
  2. 通过一个SSH连接同时运行多个命令?这能通过帕拉米科做到吗?在

Tags: 方法docker命令服务器restapi信息idexecute
2条回答

可以使用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()

在get container id list之后,可以使用multi-threads/Asynchronous来执行ssh命令docker inspect ContainerID,我认为paramiko可以处理它,但可能会很耗时。在

相关问题 更多 >