列出镜像

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

GET /images/json

我们能够尝试请求一下

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

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

[
{
"Created": 1405461399,
"Id": "88b42ffd1f7cc87c46edf70924b3e24f18da0eb69337deff4db2979d6e1032d8",
"ParentId": "c69cab00d6ef21152755a3de928625d7a02860ebe918b8fe9d1dd6aba15229b2",
"RepoTags": [
"fedora:latest"
],
"Size": 373742581,
"VirtualSize": 373742581
},
{
"Created": 1403128361,
"Id": "e54ca5efa2e962582a223ca9810f7f1b62ea9b5c3975d14a5da79d3bf6020f37",
"ParentId": "6c37f792ddacad573016e6aea7fc9fb377127b4767ce6104c9f869314a12041e",
"RepoTags": [
"ubuntu:latest"
],
"Size": 8,
"VirtualSize": 276100357
}
]

返回值相应的含义:

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

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

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

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

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

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

创建镜像

POST /images/create

请求參数:

-   **fromImage** – 镜像的名字
- **fromSrc** – 镜像的来源,即标准输入
- **repo** – 仓库
- **tag** – 标签
- **registry** – 从哪个registry

演示样例请求:

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

返回:

開始:

{
"status": "Pulling repository base"
}

过程中:

{
"status": "Downloading",
"progressDetail": {
"current": 528384,
"total": 94863360,
"start": 1405907686
},
"progress": "[> ] 528.4 kB/94.86 MB 6m30s",
"id": "27cf78414709"
}

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

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

返回值含义:

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

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

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

id:标示符

error:出错信息

插入文件到镜像中

POST /images/(name)/insert

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

演示样例请求:





不清楚为什么无法请求

检查镜像

GET /images/(name)/json

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





演示样例请求:

curl -s -XGET theegg.me/docker/images/base/json | python -mjson.tool
{
"Architecture": "",
"Author": "",
"Comment": "",
"Config": null,
"Container": "3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
"ContainerConfig": {
"AttachStderr": false,
"AttachStdin": false,
"AttachStdout": false,
"Cmd": [
"/bin/bash"
],
"CpuShares": 0,
"Cpuset": "",
"Domainname": "",
"Entrypoint": null,
"Env": null,
"ExposedPorts": null,
"Hostname": "",
"Image": "base",
"Memory": 0,
"MemorySwap": 0,
"NetworkDisabled": false,
"OnBuild": null,
"OpenStdin": true,
"PortSpecs": null,
"StdinOnce": false,
"Tty": true,
"User": "",
"Volumes": null,
"WorkingDir": ""
},
"Created": "2013-03-23T22:24:18.818426-07:00",
"DockerVersion": "",
"Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
"Os": "",
"Parent": "27cf784147099545",
"Size": 77
}

返回值解析:

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错误

获取镜像历史

GET /images/(name)/history

返回镜像name的历史





演示样例请求:

curl -XGET -s theegg.me/docker/images/base/history | python -mjson.tool
[
{
"Created": 1364102658,
"CreatedBy": "/bin/bash",
"Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
"Size": 77,
"Tags": [
"base:latest",
"base:ubuntu-12.10",
"base:ubuntu-quantal",
"base:ubuntu-quantl"
]
},
{
"Created": 1364068391,
"CreatedBy": "",
"Id": "27cf784147099545",
"Size": 175306958,
"Tags": null
}
]

返回值:

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









返回状态码:

200:没有错误

404:没有找到指定镜像

500:server错误

上传镜像到registry

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错误

将镜像打上仓库的标签

POST /images/(name)/tag

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

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

请求參数:

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

force:是否强制,默觉得false





返回状态码:

201:没有错误

400:參数有误

404:没有找到指定的镜像

409:矛盾

500:server错误

删除一个镜像

DELETE /images/(name)

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

curl -XDELETE theegg.me/docker/images/base
[
{
"Untagged": "base:latest"
}
]

请求參数:

force:是否强制

noprune:是否啰嗦(待确定)





返回状态码:

200:没有错误

404:没有找到指定镜像

500:server错误

搜索镜像

GET /images/search

在Docker Hub上搜索指定镜像

演示样例请求:

curl -XGET -s theegg.me/docker/images/search?term=sshd | python -mjson.tool
[
{
"description": "SSH Daemon created in the ssh daemon documentation example",
"is_official": false,
"is_trusted": false,
"name": "dhrp/sshd",
"star_count": 5
},
{
"description": "Ubuntu 13.10 with openssh based on the stackbrew/ubuntu:13.10 image.",
"is_official": false,
"is_trusted": false,
"name": "stephens/sshd",
"star_count": 2
},...
]

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

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. SpringBoot入门系列:第一篇 Hello World

    跟随SpringBoot的文档(http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-d ...

  2. ASP.NET实现年月日三级联动(局部刷新)

    直接上代码,不多说别的了 <asp:ScriptManager ID="ScriptManager1" runat="server"> </a ...

  3. 动态IP无法获取默认网关,显示0.0.0.0的解决办法

    IP地址使用自动获取IP方式,可以获取到IP地址和子网掩码,默认网关无法获取,显示0.0.0.0,通过修复Winsock和LSP可以解决该问题,具体步骤如下:一.修复winsock1.单击开始> ...

  4. 自动加载类PHP中spl_autoload_register函数的用法

    spl_autoload_register(PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明bool spl_autoloa ...

  5. jquery插件:点击拉出的右侧滑动菜单

    就是一个停留在页面右侧的滑动菜单,点击可以拉出,带回调函数.宽高位置可以参数指定.插件代码如下: (jquery的路径请自己修改) (function($){ $.fn.sideSwitch = fu ...

  6. Oracle数据库之PL/SQL过程与函数

    Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据 ...

  7. 适用于 PHP 开发人员的 Python 基础知识

    Thomas Myer, 负责人, Triple Dog Dare Media 简介: 您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 P ...

  8. DeDe缩略图路径的修改

    今天在使用dedecms的时候,遇到的一点小问题,移站的时候缩略图不显示.然后就去百度搜了一下,出来的都是千篇一律. 因为一个网站里面缩略图太多,手动比较慢而已费时间,  俗话说的好“时间就是生命” ...

  9. OpenStack协同并发 eventlet

    今天听easystack一哥们讲nova协同并发,结合自己之前的认识.回顾一下openstack eventlet. OpenStack作为热门的开源云平台,本身代码当然得支持高并发. 首先讲讲pyt ...

  10. Visual Studio调试之断点进阶篇

    Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...