列出镜像

列出镜像,有两个可选參数,一个是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. div中英文无法自动换行的解决办法

    在一个设定好宽度的div中,当我们输入的中文文字长度超过了设定宽度时,会自动换到下一行.   但是,如果输入的是英文字母,那么,无论你div设定宽度为多少,英文字母都是不换行直接在同一行输出,导致di ...

  2. dp、sp 转换为 px 的工具类

    public class DisplayUtil { /** * 将px值转换为dip或dp值,保证尺寸大小不变 * * @param pxValue (DisplayMetrics类中属性densi ...

  3. oracle单行函数之通用函数

    NVL (a,b) --当a=null时,返回b,否则返回a NVL2 (a, b, c) -- 当a=null时,返回c,否则返回b NULLIF (expr1, expr2) --当a=b时,返回 ...

  4. 使用scrapy制作的小说爬虫

    使用scrapy制作的小说爬虫 爬虫配套的django网站  https://www.zybuluo.com/xuemy268/note/63660 首先是安装scrapy,在Windows下的安装比 ...

  5. node.js相关

    node node最大的特点是单线程,因此一个只能有一个任务运行,大量采用异步操作. 某一个任务的后续操作一般采用回调函数的形式 var callback = function (error, val ...

  6. startActivityForResult案例

    Info:startActivty 与 startActivityForResult区别 (1):startActivity 启动了其他Activity之后不会再回调过来,此时启动者与被启动者在启动后 ...

  7. 使用activeMQ实现jms

    一:jms介绍         jms说白了就是java message service,是J2EE规范的一部分,跟jdbc差不多,sun只提供了接口,由各个厂商(provider)来进行具体的实现, ...

  8. win7下自写驱动导致开机蓝屏调试过程

    之前没有接触过驱动调试.这里上手就要解决一个因为某个自定义驱动导致的系统登陆后蓝屏问题,记录下来.   问题: 从客户那边弄来的一个虚拟机,已知是加了我们的驱动之后才会导致蓝屏. 解决过程:   使用 ...

  9. POJ(2784)Buy or Build

    Buy or Build Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1369   Accepted: 542 Descr ...

  10. MD中bitmap源代码分析--状态机实例

    1. page_attrs的状态转换关系 之前说过,bitmap的优化核心是:bitmap设置后批量写入:bitmap延时清除.写bit用bitmap_statrwrite() + bitmap_un ...