Docker 远程 API 过滤器 : filter out network by name

标签 docker

我正在尝试使用 Docker HTTP API 1.24 获取 Docker 网络列表并按名称过滤它。

出于某种原因,过滤器的文档非常少,整个 Docker 文档中的一个例子就是这个(并且它有效):

GET /networks?filters={"type":{"custom":true}} HTTP/1.1

令人困惑的是,这个孤独的例子似乎与过滤器的官方 Docker 符号相矛盾:
map[string][]string
在这里讨论:
https://stackoverflow.com/a/28055631/4486909

API 规范也没有多大帮助:
Query parameters:
  filters - JSON encoded network list filter. The filter value is one of:
  driver=<driver-name> Matches a network’s driver.
  id=<network-id> Matches all or part of a network id.
  label=<key> or label=<key>=<value> of a network label.
  name=<network-name> Matches all or part of a network name.
  type=["custom"|"builtin"] Filters networks by type.

http://docs.master.dockerproject.org/engine/reference/api/docker_remote_api_v1.24/#/list-networks

这些不过滤我们的任何东西,返回完整的网络列表。
curl -vg -X GET "v1.24/networks" --data-urlencode 'filters={"name":["MyNetwork"]}'

curl -vg -X GET "v1.24/networks" --data-urlencode 'filters={"name":["MyNetwork":true]}'

curl -vg -X GET "v1.24/networks" --data-urlencode 'filters={"name":"MyNetwork"}'

我究竟做错了什么?非常感谢。

最佳答案

感谢 BMitch valuable hint Docker Debug模式 ,它允许跟踪传入的 HTTP 请求。

关于 Docker GET 请求的 curl 参数的一些说明:

curl -gG -XGET "v1.24/networks" --data-urlencode 'filters={"name":{"MyNetwork":true}}'
-g = disable globbing, necessary for JSON proper proccessing
-G = include --data-urlencode contents into GET

关于Docker 远程 API 过滤器 : filter out network by name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41960751/

相关文章:

mongodb - 如何优雅地关闭在 docker 中运行的 monogodb 0.8

docker - 将Jenkins Security纳入Docker Image中?

docker - 无法访问Docker Windows容器内的Internet

docker - 在Minikube中创建部署时指定nodeport

jenkins - Jenkins-Docker集成-使用Jenkins构建Docker镜像并推送到注册表

docker - 是否有可能测量K8S,Openshift中POD的响应时间?

node.js - Docker Node JS 设置环境

docker - 来自服务器 : error dialing backend: dial tcp 10. 9.84.149:10250 的错误:getsockopt:连接被拒绝

mysql - Docker Compose mysql 导入 .sql

docker - traefik+docker-compose获取let's encrypt子域证书失败