2017-06-05 40 views
0

我通過ECS在AWS上運行Docker容器。我已經建立了一些基本配置的集羣。從集羣獲取正在運行的容器的列表

現在我期待着沒有。的集羣上運行的所有容器(分佈在2-3個EC2實例中)? AWS/Docker是否爲此提供了任何API?

我知道一個容器實例,做docker ps -a會返回所有正在運行/停止的容器的列表,而docker ps將在一個系統上返回正在運行的容器。但是我想要一個API(可以從外部調用)或者命令(我可以在集羣的任何實例部分運行),它顯示了跨集羣運行的容器總數?

回答

1

在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']) 
+1

是的。它有訣竅。謝謝 以前我正在嘗試這個,但它沒有返回任何東西,我認爲缺少一些東西。它沒有返回任何內容,因爲它只返回正在運行的任務。 –

0

我不知道的在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         

希望這會有所幫助。

相關問題