Docker远程API筛选器已退出
我在Docker Remote API文档中看到,filter可用于过滤状态,但我不确定如何形成请求:Docker远程API筛选器已退出,docker,Docker,我在Docker Remote API文档中看到,filter可用于过滤状态,但我不确定如何形成请求: 如何将其格式化为仅显示已退出的容器?根据我对文档的阅读,应该是: GET /containers/json?filters={"status":["exited"]} 不过,其中一些可能需要URL编码。是,但我想一步一步地完成,因为我不熟悉go数据类型 是指对过滤器使用map[string][]string,这是一个Go映射(哈希表) map[string]使用string []字符串是
如何将其格式化为仅显示已退出的容器?根据我对文档的阅读,应该是:
GET /containers/json?filters={"status":["exited"]}
不过,其中一些可能需要URL编码。是,但我想一步一步地完成,因为我不熟悉go数据类型
是指对过滤器使用map[string][]string
,这是一个Go映射(哈希表)
使用map[string]
string
是映射中值的类型定义。一片[]字符串
是一个没有固定长度的数组。然后切片是由[]
值字符串
mapS := map[string][]string{ "status":[]string{"exited"} }
转换为JSON:
{ "status": [ "exited" ] }
因此,将JSON添加到您得到的Docker API请求中:
GET /containers/json?all=1&filters={%22status%22:[%22exited%22]}
all=1
用于报告已退出的容器(如命令行上的-a
)
对于非Go用户来说,如果他们只记录API的JSON结构,可能会更容易://这是将docker与curl一起使用的最优雅的方式,而不必费心于我在中找到的编码。基本上,它告诉curl使用数据作为查询参数并对其进行编码。要退出容器,查询可能如下所示:
curl -G -XGET "http://localhost:5555/containers/json" \
-d 'all=1' \
--data-urlencode 'filters={"status":["exited"]}' | python -m json.tool
正确的URL编码方式是什么?{%27status%27%3A%5B%27退出的%27%5D}不起作用。curl-X GET返回[],而curl-X GET返回正确我已尝试在浏览器中转义引号并使用curl,但均未给出任何结果。如何获得此请求的有效响应?您需要添加
all=1
,以便退出
进行报告。答案更新完美!这就是我错过的。这对我有用:{%22status%22:%5B%22退出%22%5D}非常感谢您的详细解释。
curl -G -XGET "http://localhost:5555/containers/json" \
-d 'all=1' \
--data-urlencode 'filters={"status":["exited"]}' | python -m json.tool