我通过ECS在AWS上运行Docker容器。我已经建立了一些基本配置的集群。从集群获取正在运行的容器的列表
现在我期待着没有。的集群上运行的所有容器(分布在2-3个EC2实例中)? AWS/Docker是否为此提供了任何API?
我知道一个容器实例,做docker ps -a
会返回所有正在运行/停止的容器的列表,而docker ps
将在一个系统上返回正在运行的容器。但是我想要一个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>
如果您使用的SDK的一个,例如boto3,您可以轻松地获得数:
import boto3
client = boto3.client('ecs')
tasks = client.list_tasks(cluster='YouCluster')
print(len(tasks['taskArns'])
我不知道的在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
希望这会有所帮助。
是的。它有诀窍。谢谢 以前我正在尝试这个,但它没有返回任何东西,我认为缺少一些东西。它没有返回任何内容,因为它只返回正在运行的任务。 –