首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从集群中获取正在运行的容器列表

从集群中获取正在运行的容器列表
EN

Stack Overflow用户
提问于 2017-06-05 04:45:18
回答 2查看 3.9K关注 0票数 3

我正在通过ECS在AWS上运行码头集装箱。我已经设置了一个具有一些基本配置的集群。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-05 14:23:38

在ECS中,你看到的是任务。可以使用ECS列出所有正在运行的任务。例如,对于aws cli,您可以这样做:

代码语言:javascript
复制
aws ecs list-tasks --cluster <cluster_name>

如果您使用其中一个SDK,例如boto3,您可以很容易地获得计数:

代码语言:javascript
复制
import boto3

client = boto3.client('ecs')

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

print(len(tasks['taskArns'])
票数 3
EN

Stack Overflow用户

发布于 2017-06-05 16:27:21

我不确定如何在AWS环境中获取容器信息。但是,Docker在单个服务器上或在运行集群(特别是带有码头群的集群)中对API有很好的支持。

对于使用docker的,您需要在集群中的管理器节点上配置停靠守护进程端口(如果集群正在停靠群中运行),或者单独配置所有节点,并可以访问API。

配置停靠守护进程端口2的方法有

1)在/etc/default/docker文件下进行配置:

代码语言:javascript
复制
DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"

2)在/etc/docker/daemon.json上进行配置

代码语言:javascript
复制
{
"hosts": ["tcp://127.0.0.1:6000", "unix:///var/run/docker.sock"]
}

配置端口后,重新启动码头服务。

如果没有配置码头默认套接字(unix://var/run/docker.sock),docker可能没有正确配置,将等待无限时间。

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

代码语言:javascript
复制
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默认对接器的原因是,用户端口启用了对停靠器API的访问,而默认套接字则启用了CLI。如果/etc/ default /docker文件中没有提到默认的portunix://var/run/docker.sock,则可能会发生以下错误:

代码语言:javascript
复制
#docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

此错误并不是因为对接器没有运行,而是因为默认的对接套接字没有启用。。

一旦启用了Docker守护进程端口,就可以使用Docker 访问运行集群的服务:

curl -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,请参阅这里

注意:测试了DockerVersion17.04和DockerSward。

要通过集群中的CLI检查信息:

集群信息:

代码语言:javascript
复制
#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        

服务/容器信息:

代码语言:javascript
复制
# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE
sccuf1jgkphn        redis               replicated          3/3                 redis:latest

个人服务信息:

代码语言:javascript
复制
# 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                                   

希望这会有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44361807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档