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:
建立一個映象
映象可以從兩個方式獲取:
- 從 registry 中 pull 一個。
- 匯入一個。
用法:
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