Docker 本身提供了强大的API功能,我们可以通过访问Docker API来对Docker服务进行管理。
在本章介绍如何使用Docker API。
Quick Guide
Docker API
Docker提供了很多的API以便用户使用。这些API包含四个方面:
- Docker Registry API:提供了与存储Docker镜像的Docker Registry集成的功能。
- Docker Hub API::提供了与Docker HUB集成的功能
- Docker OAuth API: 提供了与OAuth的认证授权的功能
- Docker Remote API::提供与Docker守护进程进行集成的功能
Docker Registry API
| 用途 | 方法 | url | 样例 | 
|---|---|---|---|
| 取出镜像层 | GET | /v1/images/(image_id)/layer |  | 
| 插入镜像层 | PUT | /v1/images/(image_id)/layer |  | 
| 检索镜像 | GET | /v1/images/(image_id)/json | |
| 检索根镜像 | GET | /v1/images/(image_id)/ancestry | |
| 获取库里所有的标签或者指定标签 | GET | /v1/repositories/(namespace)/(repository)/tags |  | 
| 获取库里所有的标签或者指定标签 | GET | /v1/repositories/(namespace)/(repository)/tags/(tag*) |  | 
| 删除标签 | DELETE | /v1/repositories/(namespace)/(repository)/tags/(tag*) |  | 
| registry状态检查 | GET | /v1/_ping |  | 
| 创建镜像 | POST | /images/create |  | 
| 利用容器创建镜像 | POST | /commit |  | 
| 获取镜像清单 | GET | /images/json |  | 
| 导入指定的路径文件 | POST | /images/(name)/insert |  | 
| 删除镜像 | DELETE | /images/(name) |  | 
| 推送镜像到Registry | POST | /images/(name)/push |  | 
| Tag镜像 | POST | /images/(name)/tag |  | 
| 搜索镜像 | GET | /images/search |  | 
| 查看镜像历史 | GET | /images/(name)/history |  | 
| 构建镜像 | POST | /build |  | 
Docker Hub API
| 用途 | 方法 | url | 样例 | 
|---|---|---|---|
| 创建一个新的仓库 | PUT | /v1/repositories/(repo_name)/ | |
| 删除已经存在的仓库 | DELETE | /v1/repositories/(repo_name)/ | |
| 更新仓库镜像 | PUT | /v1/repositories/(repo_name)/images | |
| 从仓库中获取镜像 | GET | /v1/repositories/(repo_name)/images | |
| 授权 | PUT | /v1/repositories/(repo_name)/auth | |
| 创建用户仓库 | PUT | /v1/repositories/(namespace)/(repo_name)/ |  | 
| 删除用户仓库 | DELETE | /v1/repositories/(namespace)/(repo_name)/ |  | 
| 更新用户仓库镜像 | PUT | /v1/repositories/(namespace)/(repo_name)/images |  | 
| 从仓库中下载镜像 | GET | /v1/repositories/(namespace)/(repo_name)/images |  | 
| 验证用户登录 | GET | /v1/users |  | 
| 添加新用户 | POST | /v1/users | |
| 更新用户信息 | PUT | /v1/users/(username)/ | 
Docker Remote API
| 用途 | 方法 | url | 样例 | 
|---|---|---|---|
| 容器列表 | GET | /containers/json |  | 
| 创建新容器 | POST | /containers/create |  | 
| 监控容器 | GET | /containers/(id)/json |  | 
| 进程列表 | GET | /containers/(id)/top |  | 
| 容器日志 | GET | /containers/(id)/logs |  | 
| 导出容器 | GET | /containers/(id)/export |  | 
| 启动容器 | POST | /containers/(id)/start |  | 
| 停止容器 | POST | /containers/(id)/stop |  | 
| 重启容器 | POST | /containers/(id)/restart |  | 
| 终止容器 | POST | /containers/(id)/kill |  | 
注意事项
- 当Docker允许与访客容器目录共享而不限制其访问权限时,Docker Daemon的控制权应该只给授权用户。
- REST API支持Unix sockets,从而防止了cross-site-scripting攻击。
- REST API的HTTP接口应该在可信网络或者VPN下使用。
- 在服务器上单独运行Docker时,需要与其它服务隔离。
- 容器以非特权用户运行。
- Apparmor、SELinux、GRSEC解决方案,可用于额外的安全层。
- 可以使用其它容器系统的安全功能。
More info:Docker API
