列出映象

列出映象,有兩個可選引數,一個是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錯誤