Amazon web services 从群集获取正在运行的容器列表

Amazon web services 从群集获取正在运行的容器列表,amazon-web-services,docker,containers,amazon-ecs,Amazon Web Services,Docker,Containers,Amazon Ecs,我通过ECS在AWS上运行docker容器。我已经用一些基本配置设置了一个集群 现在,我期待着获得这个集群上所有正在运行的容器的数量(分布在2-3个EC2实例中)?AWS/Docker是否为此提供了API 我知道在一个容器实例中,执行docker ps-a将返回所有运行/停止的容器列表,而docker ps将返回一个系统上运行的容器。但我需要一个API(可以从外部调用)或命令(可以在集群的任何实例部分上运行),它会显示集群中正在运行的容器总数?在ECS中,您正在查看任务。您可以使用ECS API

我通过ECS在AWS上运行docker容器。我已经用一些基本配置设置了一个集群

现在,我期待着获得这个集群上所有正在运行的容器的数量(分布在2-3个EC2实例中)?AWS/Docker是否为此提供了API


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

在ECS中,您正在查看任务。您可以使用ECS API列出所有正在运行的任务。例如,使用aws cli,您可以执行以下操作:

aws ecs list-tasks --cluster <cluster_name>

我不确定能否在AWS环境中获得容器信息。但是,Docker在单服务器或运行集群时,特别是在使用集群时,对API有很好的支持

对于使用docker API的,您需要在集群中的manager节点上配置docker守护程序端口(如果集群在docker swarm中运行),或者单独配置所有节点并可以访问API

配置docker守护程序端口有两种方法

1) 在/etc/default/docker文件中配置:

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
#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                                   
2) 在/etc/docker/daemon.json上配置:

{
"hosts": ["tcp://127.0.0.1:6000", "unix:///var/run/docker.sock"]
}
配置端口后,重新启动docker服务

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

注意:但不要同时在两个配置文件中进行配置,可能会发生以下错误:

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]默认docker套接字[unix:///var/run/docker.sock]是用户端口启用对docker API的访问,而默认套接字启用CLI。如果是默认端口[unix:///var/run/docker.sock]未在/etc/default/docker文件中提及。可能会发生以下错误:

#docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
此错误不是因为docker未运行,而是因为默认docker套接字未启用。

启用Docker守护程序端口后,您可以使用Docker API访问运行集群的服务:

curl-xget

单个服务器的API,包括:

curl-xget

有关docker API的更多信息,请参阅

注意:针对Docker 17.04版和Docker Swarm进行了测试

要通过群集中的CLI检查信息,请执行以下操作:

群集信息:

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
#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                                   
服务/集装箱信息:

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
#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                                   
个人服务信息:

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
#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                                   

希望这会有帮助。

是的。它成功了。感谢之前我尝试过这个,但它没有返回任何东西,我认为有些东西丢失了。它没有返回任何内容,因为它只返回当前正在运行的任务。