1. 程式人生 > >8 Docker Remote API

8 Docker Remote API

Docker Remote API 是將會用來取代 Docker 命令的工具。本文將會用 curl 操作 Docker Remote API。

準備:

示例系統是 Ubuntu,配置檔案在 /etc/default/docker
需要把此檔案的 DOCKER_OPTS 改為 DOCKER_OPTS="-H 127.0.0.1:5555 -H unix:///var/run/docker.sock"
修改完畢後,重啟 Docker。

Docker 常用埠為 4243,本文遵照原文,改為 5555,生產環境一定要注意該埠不要被未授權 IP 訪問。

1 操作容器的api:

列出所有容器

GET /containers/json

建立新容器

POST /containers/create

檢查容器

GET /containers/(id)/json

用於獲取容器底層資訊。

程序列表

GET /containers/(id)/top

獲取容器內執行程序的列表。

容器日誌

GET /containers/(id)/logs

獲取容器內 stdout 和 stderr 的輸出。

匯出容器

GET /containers/(id)/export

相當於 docker export,可以直接 curl 到一個映象檔案。

啟動容器

POST /containers/(id)/start

停止容器

POST /containers/
(id)/stop

重啟容器

Restart a Container 

KILL容器

POST /containers/(id)/kill

2 用於操作映象的 Docker Remote API:

建立一個映象

映象可以從兩個方式獲取:

  1. 從 registry 中 pull 一個。
  2. 匯入一個。

用法:

POST /images/create
POST /images/create?fromImage=base 獲取名叫 base 的映象。
POST /images/create?fromSrc=url 從 url 匯入映象。

Flux7 這裡就有一個 BUG。
shell操作中帶有 &

 的情況下,是需要非常小心的。
圖片中的命令需要改正為:curl -v -X POST "http://localhost:5555/images/create?fromImage=base&tag=latest"

從容器建立映象

POST /commit

列出映象

GET /images/json

插入檔案

POST /images/(name)/insert
POST /images/test/insert?path=/usr&url=myurl

如圖,將 url 提供的檔案插入到 name 對應的映象的 path 目錄中。

刪除映象

DELETE /images/(name)

推送映象到 registry

POST /images/(name)/push

為映象做標籤

POST /images/(name)/tag

搜尋映象

GET /images/search

檢視映象歷史

GET /images/(name)/history

構建映象

POST /build

這個需要解釋一下:POST 傳入的 Dockerfile 檔案必須是 tar.gz 格式。或者不傳入 Dockerfile,而是用 remote 引數指定一個,這種情況下不要求格式。

使用 POST 傳入檔案的用法:

再例如使用 remote 傳入 Dockerfile 的 url 用法:

命令 # curl localhost/Dockerfile   #用於展示儲存Dockerfile的URI
FROM ubuntu
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greating
VOLUME /myvol
命令 # curl -X POST "127.0.0.1:4243/build?t=asd&remote=http%3A%2F%2Flocalhost%2FDockerfile"
命令 # docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
asd                      latest              1946f0511bda        36 seconds ago      188.3 MB