列出镜像

列出镜像,有两个可选參数,一个是all,一个是filter,all可选值有,0/False/false,1/True/true,默觉得0;filter是一个包括一个过滤对象的json,形式如‘{"dangling":["true"]}'

  1. GET /images/json

我们能够尝试请求一下

  1. curl -s -XGET theegg.me/docker/images/json?all=0 | python -mjson.tool

能够看到例如以下的返回值:

  1. [
  2. {
  3. "Created": 1405461399,
  4. "Id": "88b42ffd1f7cc87c46edf70924b3e24f18da0eb69337deff4db2979d6e1032d8",
  5. "ParentId": "c69cab00d6ef21152755a3de928625d7a02860ebe918b8fe9d1dd6aba15229b2",
  6. "RepoTags": [
  7. "fedora:latest"
  8. ],
  9. "Size": 373742581,
  10. "VirtualSize": 373742581
  11. },
  12. {
  13. "Created": 1403128361,
  14. "Id": "e54ca5efa2e962582a223ca9810f7f1b62ea9b5c3975d14a5da79d3bf6020f37",
  15. "ParentId": "6c37f792ddacad573016e6aea7fc9fb377127b4767ce6104c9f869314a12041e",
  16. "RepoTags": [
  17. "ubuntu:latest"
  18. ],
  19. "Size": 8,
  20. "VirtualSize": 276100357
  21. }
  22. ]

返回值相应的含义:

Created:创建的时间,这是一个UNIX时间,以1970为起点,单位为秒

Id:是一个SHA256值,是该镜像的标识。

ParentId:是一个SHA256值,是该镜像的父镜像的标识。

RepoTags:是一个字符串数组,是标明在仓库中它的标签。一个镜像可能会带有多个标签。

Size:是镜像的实际的大小,即镜像占硬盘空间的大小。

VirtualSize:是镜像的虚拟大小,或者就是镜像的大小。镜像的实际大小为父镜像的虚拟大小减去该镜像的虚拟大小。

创建镜像

  1. POST /images/create

请求參数:

  1. - **fromImage** 镜像的名字
  2. - **fromSrc** 镜像的来源,即标准输入
  3. - **repo** 仓库
  4. - **tag** 标签
  5. - **registry** 从哪个registry

演示样例请求:

  1. curl -s -XPOST theegg.me/docker/images/create?fromImage=base

返回:

開始:

  1. {
  2. "status": "Pulling repository base"
  3. }

过程中:

  1. {
  2. "status": "Downloading",
  3. "progressDetail": {
  4. "current": 528384,
  5. "total": 94863360,
  6. "start": 1405907686
  7. },
  8. "progress": "[> ] 528.4 kB/94.86 MB 6m30s",
  9. "id": "27cf78414709"
  10. }

出错时:(来自官方文档,但实际curl操作的时候是显示504超时,原因还没有查明)

  1. {"error":"Invalid..."}

返回值含义:

status:表示状态,当前操作状态

progressDetail:表示进度细节,里面包括三个值,current当前位置,total总共多少,start从何处開始

progress:表示进度,是一个能直接输出的进度显示条(ascii图)

id:标示符

error:出错信息

插入文件到镜像中

POST /images/(name)/insert

将url指定的文件插入到名字为name的镜像的路径path中

演示样例请求:





不清楚为什么无法请求

检查镜像

  1. GET /images/(name)/json

返回一些指定镜像名的底层信息





演示样例请求:

  1. curl -s -XGET theegg.me/docker/images/base/json | python -mjson.tool
  1. {
  2. "Architecture": "",
  3. "Author": "",
  4. "Comment": "",
  5. "Config": null,
  6. "Container": "3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
  7. "ContainerConfig": {
  8. "AttachStderr": false,
  9. "AttachStdin": false,
  10. "AttachStdout": false,
  11. "Cmd": [
  12. "/bin/bash"
  13. ],
  14. "CpuShares": 0,
  15. "Cpuset": "",
  16. "Domainname": "",
  17. "Entrypoint": null,
  18. "Env": null,
  19. "ExposedPorts": null,
  20. "Hostname": "",
  21. "Image": "base",
  22. "Memory": 0,
  23. "MemorySwap": 0,
  24. "NetworkDisabled": false,
  25. "OnBuild": null,
  26. "OpenStdin": true,
  27. "PortSpecs": null,
  28. "StdinOnce": false,
  29. "Tty": true,
  30. "User": "",
  31. "Volumes": null,
  32. "WorkingDir": ""
  33. },
  34. "Created": "2013-03-23T22:24:18.818426-07:00",
  35. "DockerVersion": "",
  36. "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
  37. "Os": "",
  38. "Parent": "27cf784147099545",
  39. "Size": 77
  40. }

返回值解析:

Architecture:架构

Author:作者

Comment:评注

Config:配置

Container:当前使用该镜像的容器

ContainerConfig:容器的配置

Created:创建时间

DockerVersion:Docker的版本号

Id:Id值

Os:操作系统

Parent:父镜像的Id

Size:大小





ContainerConfig中:

AttachStderr:错误输出是否有附着

AttachStdin:标准输入是否有附着

AttachStdout:标准输出是否有附着

Cmd:运行的命令,是一个数组

CpuShares:共享CPU值

Cpuset:所属CPU集合

Domainname:域名

Entrypoint:实体点

Env:环境

ExposedPorts:对外暴露的port

Hostname:主机名

Image:镜像名

Memory:内存占用

MemorySwap:内存交换

NetworkDisabled:是否禁用网络

OnBuild:在构建

OpenStdin:是否打开标准输入

PortSpecs:指定port

StdinOnce:以前使用标准输入

Tty:是否使用TTY

User:用户

Volumes: 使用卷

WorkingDir:工作文件夹





返回状态码:

200:没有错误

404:没有找到指定镜像

500:server错误

获取镜像历史

  1. GET /images/(name)/history

返回镜像name的历史





演示样例请求:

  1. curl -XGET -s theegg.me/docker/images/base/history | python -mjson.tool
  2. [
  3. {
  4. "Created": 1364102658,
  5. "CreatedBy": "/bin/bash",
  6. "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
  7. "Size": 77,
  8. "Tags": [
  9. "base:latest",
  10. "base:ubuntu-12.10",
  11. "base:ubuntu-quantal",
  12. "base:ubuntu-quantl"
  13. ]
  14. },
  15. {
  16. "Created": 1364068391,
  17. "CreatedBy": "",
  18. "Id": "27cf784147099545",
  19. "Size": 175306958,
  20. "Tags": null
  21. }
  22. ]

返回值:

是一个数组,表示一系列镜像









返回状态码:

200:没有错误

404:没有找到指定镜像

500:server错误

上传镜像到registry

  1. POST /images/(name)/push

将名为name的镜像上传到registry

请求參数:

registry:你想要上传到的registry





请求头部:

X-Registry-Auth:包括一个base64编码的AuthConfig对象,即{'username': string, 'password': string, 'email': string, 'serveraddress' : string}





返回状态码:

返回状态码:

200:没有错误

404:没有找到指定镜像

500:server错误

将镜像打上仓库的标签

  1. POST /images/(name)/tag

将名为name的镜像打上仓库的标签

  1. curl -XPOST theegg.me/docker/images/base/tag?repo=a -i
  1. HTTP/1.1 201 Created
  2. Server: nginx
  3. Date: Tue, 29 Jul 2014 02:26:24 GMT
  4. Content-Type: text/plain; charset=utf-8
  5. Content-Length: 0
  6. Connection: keep-alive

请求參数:

repo:指定要打的标签的仓库名

force:是否强制,默觉得false





返回状态码:

201:没有错误

400:參数有误

404:没有找到指定的镜像

409:矛盾

500:server错误

删除一个镜像

  1. DELETE /images/(name)

从文件系统上删除名为name的镜像

  1. curl -XDELETE theegg.me/docker/images/base
  2. [
  3. {
  4. "Untagged": "base:latest"
  5. }
  6. ]

请求參数:

force:是否强制

noprune:是否啰嗦(待确定)





返回状态码:

200:没有错误

404:没有找到指定镜像

500:server错误

搜索镜像

  1. GET /images/search

在Docker Hub上搜索指定镜像

演示样例请求:

  1. curl -XGET -s theegg.me/docker/images/search?term=sshd | python -mjson.tool
  1. [
  2. {
  3. "description": "SSH Daemon created in the ssh daemon documentation example",
  4. "is_official": false,
  5. "is_trusted": false,
  6. "name": "dhrp/sshd",
  7. "star_count": 5
  8. },
  9. {
  10. "description": "Ubuntu 13.10 with openssh based on the stackbrew/ubuntu:13.10 image.",
  11. "is_official": false,
  12. "is_trusted": false,
  13. "name": "stephens/sshd",
  14. "star_count": 2
  15. },...
  16. ]

返回的是一个镜像数组,每一个镜像有:

description:描写叙述信息

is_official:是否官方

is_trusted:是否受信任

name:名字

star_count:标星数





返回状态码:

200:没有错误

500:server错误

[开源夏令营][四] Docker remote API 之 镜像篇的更多相关文章

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

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

  2. Docker remote API简单配置使用

    1.启动docker remote API的方式如下: docker -d -H uninx:///var/run/docker.sock -H tcp://0.0.0.0:5678 2.但是为了伴随 ...

  3. 关于docker remote api未授权访问漏洞的学习与研究

    漏洞介绍: 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker. docker ...

  4. Docker remote API

    Docker remote API 该教程基于Ubuntu或Debian环境,如果不是,请略过本文 Docker API 在Docker生态系统中一共有三种API Registry API:提供了与来 ...

  5. [Shell]Docker remote api未授权访问漏洞(Port=2375)

    0x01 简介 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker. Docke ...

  6. 【转+自己研究】新姿势之Docker Remote API未授权访问漏洞分析和利用

    0x00 概述 最近提交了一些关于 docker remote api 未授权访问导致代码泄露.获取服务器root权限的漏洞,造成的影响都比较严重,比如 新姿势之获取果壳全站代码和多台机器root权限 ...

  7. Docker Remote API v1.24

    1. Brief introduction The Remote API has replaced rcli. The daemon listens on unix:///var/run/docker ...

  8. docker remote api enable in ubuntu

    现在使用docker作为开发环境,操作系统是ubuntu16.10,pycharm中使用remote interpreter,需要用到remote api,结果发现自己的原答案是针对ubuntu 14 ...

  9. docker remote api 的安全隐患

    开启docker的api,首先要知道docker的守护进程daemon,在下认为daemon作为Client和service连接的一个桥梁,负责代替将client的请求传递给service端. 默认情 ...

随机推荐

  1. Wcf+EF框架搭建实例

    一.最近在使用Wcf创建数据服务,但是在和EF框架搭建数据访问时遇到了许多问题 下面是目前整理的基本框架代码,经供参考使用,源代码地址:http://git.oschina.net/tiama3798 ...

  2. CSS3 2D转换

    CSS3 转换 通过CSS3转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 它如何工作? 转换是是元素改变形状.尺寸和位置的一种效果. 你可以使用2D或3D转换你的元素. 浏览器支持 属性 浏 ...

  3. 电机KV值对应的桨

    KV2200 -6寸 KV1400 -8寸 KV1000 -10寸

  4. crtmpserver组网方案

    A Powerful Live Streaming Setup 搭建强大的直播系统 Recently we had a project requiring live streaming setup, ...

  5. Win7下Solr4.10.1和IK Analyzer中文分词

    1.下载IK中文分词压缩包IK Analyzer 2012FF_hf1,并解压到D:\IK Analyzer 2012FF_hf1: 2.将D:\IK Analyzer 2012FF_hf1\IKAn ...

  6. 关于C++的变量和类的声明和定义

    什么是变量?变量或者叫对象,是一个有具名的.可以供程序操作的存储空间.这里具名是指变量是有名字的,可供操作是指能进行加减乘除或者输入输出等操作,存储空间则是指有一块属于它的内存空间. 为了便于说明,标 ...

  7. phpcms v9 表单向导里添加图片字段,提示会话过期,请重新登陆

    用 phpcms v9 制作前端用户提交信息时,有个图片上传的栏目. 如果注释 /phpcms/modules/attachment/attachment.php 20//判断是否登录 21 if(e ...

  8. xml约束之schema

    使用名称空间引入Schema : 通常需要在Xml文档中的根结点中使用schemaLocation属性来指定. <itcast:书架 xmlns:itcast="http://www. ...

  9. 网站注册信息的JS全码

    <div class="box_index2">                <div class="login_title">    ...

  10. common常用方法和部分算法

    var commonindex = function() {}; commonindex.prototype = { ajaxRequest: function(request) { $.ajax({ ...