我通過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
希望這會有所幫助。
是的。它有訣竅。謝謝 以前我正在嘗試這個,但它沒有返回任何東西,我認爲缺少一些東西。它沒有返回任何內容,因爲它只返回正在運行的任務。 –