好久没写博客,工作中想着未来部门需要对docker进行维护相对麻烦,而且,网络上也缺少一些合适的项目,于是准备筹划自己动手。先找到了Docker 的API文档,地址是:https://docs.docker.com/engine/api/v1.26/

上班的时候发现有API功能,可以直接获取json格式数据,那就不需要自己动手去运行实例并解析文本了。

接口可以使用http查询,也可以使用Unix进程协议查询。为了方便,我暂时使用的是unix进程协议进行查询。

既然用Unix进程协议的话,那就可以使用curl命令进行查看,只需要添加参数--unix-socket即可。

接口:GET /containers/json

命令:curl --unix-socket /var/run/docker.sock http://v1.26/containers/json

结果:

结果解析:从中我们可以发现有网络管理(network),挂载管理(mounts),运行情况(state)以及容器的基本信息

接口:POST /containers/create

命令:curl -v --unix-socket /var/run/docker.sock http://v1.26/containers/create?name=hell -d '{"Image":"ubuntu"}' -H "Content-Type: application/json"

结果:

结果解析:创建容器需要在请求中带有name参数,同时需要post请求大量配置,不过也可以简单写一个image的json字符串,不过这样会在运行后终止,post请求的头部需要是application/json ,否则会爆500错误,{"message":"Content-Type specified (application/x-www-form-urlencoded) must be 'application/json'"}

接口:GET /containers/{id}/json

命令:curl -v --unix-socket /var/run/docker.sock http://v1.26/containers/4941f62/json

结果:

结果说明:该方法可以查询一个容器的状态信息,参数可以使用id和名称,状态过多就不一一介绍了。

接口:GET /containers/{id}/top

命令:curl -v --unix-socket /var/run/docker.sock http://v1.26/containers/4941f62/top

结果:

结果解析:接口会得到容器内运行的进程列表,其实就算top命令的结果,会返回一个进程列表和一个title字段。

接口:GET /containers/{id}/logs

命令:curl -v --unix-socket /var/run/docker.sock http://v1.26/containers/4941f62/logs?stderr=true

结果:貌似可以获取到容器的日志信息,stdout和stderr等,暂时没测试出来结果。

Docker Api 实测的更多相关文章

  1. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  2. 【漏洞挖掘】攻击对外开放的Docker API接口

    https://medium.com/@riccardo.ancarani94/attacking-docker-exposed-api-3e01ffc3c124 1)场景 攻击开放在互联网的Dock ...

  3. python调用docker API(CentOS6.5)

    一 环境背景 python-2.7.8 docker 版本 1.15 (*yum安装为1.14版本,需升级为1.15,详见后续步骤) 二 获取Docker容器指标[指标可行性分析见笔记:] CPU : ...

  4. docker API 配置与使用

    在网上看到一大堆乱乱七八招的博客,很多都不能用,我根据这些天踩的坑来总结一下吧 首先!怎么配置 docker API 两种方法 在/etc/sysconfig/docker文件里加一行OPTIONS= ...

  5. Docker for mac开启docker api调用

    docker-java 支持unix socket调用的 DefaultDockerClientConfig config = DefaultDockerClientConfig.createDefa ...

  6. Java 使用 UnixSocket 调用 Docker API

    在 Docker 官网查阅 API 调用方式 例如:查询正在运行的容器列表,HTTP 方式如下: $ curl --unix-socket /var/run/docker.sock http:/v1. ...

  7. python docker api

    开启Remote API docker默认是没有开启Remote API的,需要我们手动开启.编辑/lib/systemd/system/docker.service文件, 在文件里的ExecStar ...

  8. 使用docker api

    前提: 系统centos 7 docker version 1.10.3 使用systemd启动docker 访问方式: 修改/usr/lib/systemd/system/docker.servic ...

  9. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

随机推荐

  1. js中的函数声明和函数表达式的区别

    目录 一.声明与表达式的格式 1.1 声明式的格式: 1.2 表达式的格式: 二.区别 2.1 函数表达式可以直接在后面加括号执行,而函数声明不可以. 2.2 函数表达式可以被提前解析出来 2.3 命 ...

  2. font的基本知识

    字体 你无法预料到用户是否可以访问样式表里定义的字体.所以在设置字体时,在属性后指定一个替代的字体列表是个不错的主意. 在这个字体列表的最后加上系统字体中的一个,如:serif,sans-serif, ...

  3. 机器学习技法笔记:Homework #6 AdaBoost&Kernel Ridge Regression相关习题

    原文地址:http://www.jianshu.com/p/9bf9e2add795 AdaBoost 问题描述 程序实现 # coding:utf-8 import math import nump ...

  4. 剑指offer第二版面试题2:数组中重复的数字(JAVA版)

    题目:在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的.请找出数组中任意一个重复的数字,但是不能修改输入的数组.例如,如果输入长度为8的数组{2,3,5,4,3 ...

  5. 洛谷 P3803 【模板】多项式乘法(FFT)

    题目链接:P3803 [模板]多项式乘法(FFT) 题意 给定一个 \(n\) 次多项式 \(F(x)\) 和一个 \(m\) 次多项式 \(G(x)\),求 \(F(x)\) 和 \(G(x)\) ...

  6. 大数运算之 Java BigInteger 的基本用法

    大数运算之 Java BigInteger 的基本用法 在程序设计竞赛中会遇到高精度运算的问题,C++没有高精度运算,只能手动模拟人工运算,手动实现高精度,而 java.math 包中的 BigInt ...

  7. 【Java多线程系列随笔一】浅析 Java Thread.join()

    一.在研究join的用法之前,先明确两件事情. 1.join方法定义在Thread类中,则调用者必须是一个线程, 例如: Thread t = new CustomThread(); //这里一般是自 ...

  8. Spring 学习笔记 数据绑定,校验,BeanWrapper 与属性编辑器

    Spring 数据绑定,校验,BeanWrapper,与属性编辑器 Data Binding 数据绑定(Data binding)非常有用,它可以动态把用户输入与应用程序的域模型(或者你用于处理用户输 ...

  9. 判断字符串是否为JSON

    function isJSON(str) { if (typeof str == 'string') { try { var obj=JSON.parse(str); if(typeof obj == ...

  10. what codes does sudo command do in Linux?

    sometime, to make your change of configuration file be effective to web application, we have to rest ...