Amazon web services 从群集获取正在运行的容器列表
我通过ECS在AWS上运行docker容器。我已经用一些基本配置设置了一个集群 现在,我期待着获得这个集群上所有正在运行的容器的数量(分布在2-3个EC2实例中)?AWS/Docker是否为此提供了APIAmazon 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
我知道在一个容器实例中,执行
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
希望这会有帮助。是的。它成功了。感谢之前我尝试过这个,但它没有返回任何东西,我认为有些东西丢失了。它没有返回任何内容,因为它只返回当前正在运行的任务。