列出镜像

列出镜像,有两个可选參数,一个是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. Lesson 7: Responsive Typography In Action

    Lesson 7: Responsive Typography In Action 排版一直都是设计和传达的基础.虽然现在的设计和印刷品设计差别很大,但核心原则还是不变的. Article 1: Bo ...

  2. drop表,然后创建表,插入数据,并创建索引等内容。

    execute immediate 'drop table sjb_jhgl_ydjhtdsbb';   execute immediate 'create table dw_sc.sjb_jhgl_ ...

  3. "float: left;" div 不换行显示

    <div id='p'> <div id='c1'> </div> <div id='c2'> </div> <div id='c3' ...

  4. STL删除vector或list的方法及注意的问题

    删除vector中的元素 1.删除指定的所有对象 STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除.若要真正移除,需要搭配使用erase().例子: vector ...

  5. arclist标签和list标签区别

    很多站长朋友在刚入门织梦的时候对织梦的标签存在很多的困惑,关于arclist标签和list标签,甚至不知道啥时候用arclist,啥时用list标签.arclist 为自由列表,全局模板中都生效,一般 ...

  6. C++实现Log()日志函数

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600649.html 需求:Log()函数,能够自动根据时间记录日志信息,要求不定参数类型和参数个数. 第一 ...

  7. Html中input标签的使用

    1.取消按钮按下时的虚线框 在input里添加属性值 hideFocus 或者 HideFocus=true 2.只读文本框内容 在input里添加属性值 readonly 3.防止退后清空的TEXT ...

  8. iOS中定时器NSTimer的使用-备用

    1.初始化 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelect ...

  9. d3可视化实战03:神奇的superformula

    需求驱动实现 前文讲过了D3的数据驱动机制,中间所举的例子都很简单.例如那个demo里面,绑定的数据是一个简单的数组,实现的图元也仅仅是一堆用SVG画的circle.但是现实世界中我们往往会遇到复杂的 ...

  10. XP系统显示文件夹选项属性被删除解决注册表

    Title:XP系统显示文件夹选项属性被删除解决注册表 -- 2010-11-18 13:17 昨天中了个毒窝,还有恶意软件,十分不爽. 开始恶意软件把显示所有文件夹给删除了,去找了个注册表,重新注册 ...