2017-06-05 63 views
0

我通过ECS在AWS上运行Docker容器。我已经建立了一些基本配置的集群。从集群获取正在运行的容器的列表

现在我期待着没有。的集群上运行的所有容器(分布在2-3个EC2实例中)? AWS/Docker是否为此提供了任何API?

我知道一个容器实例,做docker ps -a会返回所有正在运行/停止的容器的列表,而docker ps将在一个系统上返回正在运行的容器。但是我想要一个API(可以从外部调用)或者命令(我可以在集群的任何实例部分运行),它显示了跨集群运行的容器总数?

回答

1

在ECS中,您正在查看任务。您可以使用ECS API列出所有正在运行的任务。随着AWS CLI,例如,你可以这样做:

aws ecs list-tasks --cluster <cluster_name> 

如果您使用的SDK的一个,例如boto3,您可以轻松地获得数:

import boto3 

client = boto3.client('ecs') 

tasks = client.list_tasks(cluster='YouCluster') 

print(len(tasks['taskArns']) 
+1

是的。它有诀窍。谢谢 以前我正在尝试这个,但它没有返回任何东西,我认为缺少一些东西。它没有返回任何内容,因为它只返回正在运行的任务。 –

0

我不知道的在AWS环境中获取容器信息。但是Docker在单服务器或运行集群中对API提供了非常好的支持,尤其是集群中的Docker Swarm

对于使用你需要配置管理器节点上泊坞窗守护港口集群的(如果集群中泊坞窗群中运行)或单独配置的所有节点,并可以访问的API泊坞窗API

有在配置泊坞窗守护程序端口

1)的/ etc /默认/搬运工文件配置2种方式:

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock" 

2)配置的/ etc /泊坞窗/daemon.json

{ 
"hosts": ["tcp://127.0.0.1:6000", "unix:///var/run/docker.sock"] 
} 

Re一旦端口被配置,就启动docker服务。

如果未配置docker默认套接字(unix:///var/run/docker.sock),则Docker可能没有正确配置并且将等待无限期。

注:但不配置IN BOTH配置文件,可能会出现以下错误:

Waiting for /var/run/docker.sock 
unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: hosts: (from flag: [tcp://127.0.0.1:5000 unix:///var/run/docker.sock], from file: tcp://127.0.0.1:5000) 

其原因将两者用户端口[TCP://127.0.0.1 :5000]默认码头套接字[unix:///var/run/docker.sock]是用户端口允许访问码头API,而默认套接字启用CLI。如果默认端口[unix:/// var/run/docker。袜子]是不是在/ etc /默认/泊坞窗文件中的以下错误可能会出现中提到:

#docker ps 
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 

此错误是不是因为码头工人没有运行,但由于默认不启用泊坞窗插座。

一旦启用的码头工人守护进程端口可以访问服务运行与码头工人API集群:

卷曲-X GET为单台服务器http://127.0.0.1:6000/services?id=all

或者API与:

curl - X GET http://127.0.0.1:6000/containers/json?all

更多搬运工的API参考here

注:经测试,泊坞窗版本17.04和码头工人群

要通过CLI集群中查询信息:

集群信息:

#docker node ls 
ID       HOSTNAME    STATUS AVAILABILITY MANAGER STATUS 
7pl9bab4g2yjwctjxq2aax3ud radisysuser-VirtualBox Ready Active   
o45wire6qhu8i5eujl6iyon2p * labadmin-VirtualBox  Ready Active  Leader 
odwdr5uey085hpb8tnwtj11e0 radisysuser-VirtualBox Ready Active   

服务/集装箱信息:

# docker service ls 
ID     NAME    MODE    REPLICAS   IMAGE 
sccuf1jgkphn  redis    replicated   3/3     redis:latest 

个人服务信息:

# docker service ps redis 
ID     NAME    IMAGE    NODE      DESIRED STATE  CURRENT STATE      ERROR    PORTS 
jgix9p141pxt  redis.1    redis:latest  radisysuser-VirtualBox Running    Running less than a second ago       
1i4yc8f9cqm5  redis.2    redis:latest  radisysuser-VirtualBox Running    Running less than a second ago       
dk1tubki2dg8   \_ redis.2   redis:latest  radisysuser-VirtualBox Shutdown   Shutdown less than a second ago      
stpl55l6wwci  redis.3    redis:latest  labadmin-VirtualBox  Running    Running 4 hours ago         

希望这会有所帮助。

相关问题