[開源夏令營][四] Docker remote API 之 鏡像篇

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   java   使用   os   

列出鏡像

列出鏡像,有兩個可選參數,一個是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 CreatedServer: nginxDate: Tue, 29 Jul 2014 02:26:24 GMTContent-Type: text/plain; charset=utf-8Content-Length: 0Connection: 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錯誤


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.