我在Docker Remote API Docs中看到过滤器可用于过滤状态,但我不确定如何形成请求:
https://docs.docker.com/reference/api/docker_remote_api_v1.16/#list-containers
GET /containers/json?filters=status[exited] ?????
Run Code Online (Sandbox Code Playgroud)
如何格式化以显示仅退出的容器?
Mat*_*att 15
jwodder 在过滤器上是正确的,但我想逐步完成这一步,因为我不熟悉Go数据类型.
所述多克尔API文档是指使用map[string][]string
用于过滤器,这是一种围棋地图(哈希表)
map[string]
定义具有类型键的映射 string
[]string
是地图中值的类型定义.切片
[]
是没有固定长度的数组.然后切片由
string
值组成.
所以API需要包含字符串的数组的哈希映射.此Go Playground演示了对Go过滤器数据的编组:
mapS := map[string][]string{ "status":[]string{"exited"} }
Run Code Online (Sandbox Code Playgroud)
进入JSON:
{ "status": [ "exited" ] }
Run Code Online (Sandbox Code Playgroud)
因此,将JSON添加到Docker API请求中:
GET /containers/json?all=1&filters={%22status%22:[%22exited%22]}
Run Code Online (Sandbox Code Playgroud)
all=1
包含报告已退出的容器(如-a
在命令行上).
如果非Go人员刚刚记录了API的JSON结构,那么它可能会更容易:/
根据我阅读文档,应该是:
GET /containers/json?filters={"status":["exited"]}
Run Code Online (Sandbox Code Playgroud)
不过,其中一些可能需要进行 URL 编码。
在curl中使用docker且不打扰编码的最优雅的方法是我在此答案中找到的。基本上,它告诉curl使用数据作为查询参数并对其进行编码。要退出容器,查询可能类似于:
curl -G -XGET "http://localhost:5555/containers/json" \
-d 'all=1' \
--data-urlencode 'filters={"status":["exited"]}' | python -m json.tool
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4878 次 |
最近记录: |