我正在通过ECS在AWS上运行码头集装箱。我已经设置了一个具有一些基本配置的集群。
现在我期待着得到不。在这个集群上运行的所有容器(分布在2-3个EC2实例中)?AWS / Docker是否为此提供了任何API?
我知道在容器实例中,执行docker ps -a将返回所有正在运行/停止的容器的列表,而docker ps将在一个系统上返回正在运行的容器。但是我需要一个API (可以从外部调用)或命令(我可以在集群的任何实例部分上运行它),它显示了集群中运行的容器的总数?
发布于 2017-06-05 14:23:38
在ECS中,你看到的是任务。可以使用ECS列出所有正在运行的任务。例如,对于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'])发布于 2017-06-05 16:27:21
我不确定如何在AWS环境中获取容器信息。但是,Docker在单个服务器上或在运行集群(特别是带有码头群的集群)中对API有很好的支持。
对于使用docker的,您需要在集群中的管理器节点上配置停靠守护进程端口(如果集群正在停靠群中运行),或者单独配置所有节点,并可以访问API。
配置停靠守护进程端口2的方法有
1)在/etc/default/docker文件下进行配置:
DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"2)在/etc/docker/daemon.json上进行配置
{
"hosts": ["tcp://127.0.0.1:6000", "unix:///var/run/docker.sock"]
}配置端口后,重新启动码头服务。
如果没有配置码头默认套接字(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和默认对接器的原因是,用户端口启用了对停靠器API的访问,而默认套接字则启用了CLI。如果/etc/ default /docker文件中没有提到默认的portunix://var/run/docker.sock,则可能会发生以下错误:
#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检查信息:
集群信息:
#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 希望这会有帮助。
https://stackoverflow.com/questions/44361807
复制相似问题