(七)Docker API

最后更新于:2022-04-01 23:05:07

# Docker入门教程(七)Docker API > 【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和Docker Hub API。 纵观我们的Docker系列教程,我们已经讨论了很多重要的[Docker组件](http://dockerone.com/article/101)与[命令](http://dockerone.com/article/102)。在本文中,我们将继续深入学习Docker:剖析Docker APIs。 Docker提供了很多的API以便用户使用。这些API包含四个方面: * Docker Registry API * Docker Hub API * Docker OAuth API * Docker Remote API 具体到这篇文章,我们将讨论Docker Registry API以及Docker Hub API。 ### Docker Registry API Docker Registry API是[Docker Registry](http://dockerone.com/article/104)的REST API,它简化了镜像和仓库的存储。该API不能访问用户帐户或者获得授权。你可以阅读[Docker系列教程的第四章](http://dockerone.com/article/104),以了解更多有关Registry的类型(译者注:Docker中有几种不同的Registry)。 #### Extract image layer: 取出镜像层: `GET /v1/images/(image_id)/layer` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/40f92c37cd26697fa4eb92215563af15_1082x722.jpg) #### Insert image layer: 插入镜像层: `PUT /v1/images/(image_id)/layer` #### Retrieve an image: 检索镜像: `GET /v1/images/(image_id)/json` #### Retrieve roots of an image: 检索根镜像: `GET /v1/images/(image_id)/ancestry` #### Obtain all tags or specific tag of a repository: 获取库里所有的标签或者指定标签: `GET /v1/repositories/(namespace)/(repository)/tags` 或者 `GET /v1/repositories/(namespace)/(repository)/tags/(tag*)` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/117bf7418eb3df7760b5513fa0c37658_763x206.png) #### Delete a tag: 删除标签: `DELETE /v1/repositories/(namespace)/(repository)/tags/(tag*)` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/6d4912e1683049a0aad14de20ff17556_1280x577.jpg) #### Status check of registry: registry状态检查: `GET /v1/_ping` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/27a4fb738d6a8e31abd3a821786355a5_960x712.png) ### Docker Hub API Docker Hub API是Docker Hub的一个简单的REST API。再提醒一下,请参考[Docker系列教程的第四篇文章](http://dockerone.com/article/104)了解Docker Hub。Docker Hub 通过管理校验(checksums)以及公共命名空间(public namespaces)来控制着用户帐户和授权。该API还支持有关用户仓库和library仓库的操作。 首先,让我们来看看特殊的library仓库(需要管理员权限)的命令: 1. 创建一个新的仓库。使用以下命令可以创建新的library仓库: `PUT /v1/repositories/(repo_name)/` 其中,`repo_name`是新的仓库名称。 2. 删除已经存在的仓库。命令如下: `DELETE /v1/repositories/(repo_name)/` 其中,`repo_name`是要删除的仓库名称。 3. 更新仓库镜像。命令如下: `PUT /v1/repositories/(repo_name)/images` 4. 从仓库中获取镜像。命令如下: `GET /v1/repositories/(repo_name)/images` 5. 授权。使用Token获取仓库授权,如下: `PUT /v1/repositories/(repo_name)/auth` 接下来,让我们来看看用户仓库的命令。library仓库与用户仓库命令之间的主要区别是命名空间的使用。 1.创建用户仓库。命令如下: `PUT /v1/repositories/(namespace)/(repo_name)/` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/60c578fb74be38a0cee9c32caa009d5b_763x245.png) 2.删除用户仓库,命令如下: `DELETE /v1/repositories/(namespace)/(repo_name)/` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/ff5817b97a7f2ec58b8b0593dd12e6f9_764x342.png) 3.更新用户仓库镜像,命令如下: `PUT /v1/repositories/(namespace)/(repo_name)/images` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/dcf50e6770f2a7b19ac2f70868bcb105_763x555.png) 4.从仓库中下载镜像。如下: `GET /v1/repositories/(namespace)/(repo_name)/images` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/c610dd5f740b8a76a72061fd159d6846_763x453.png) 5.验证用户登录,如下: `GET /v1/users` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/117bf7418eb3df7760b5513fa0c37658_763x206.png) 6.添加新用户,命令如下: `POST /v1/users` 7.更新用户信息,如下: `PUT /v1/users/(username)/` 现在,我们已经走过了Docker API之旅的第一站,第二站是有关Docker OAuth以及Remote API的内容,我们将在[Docker系列教程的下一篇](http://dockerone.com/article/109)见。 > 出处:http://dockone.io/article/107 > 原文链接:[Ultimate Guide for Docker APIs](http://blog.flux7.com/blogs/docker/docker-tutorial-series-part-7-ultimate-guide-for-docker-apis)(翻译:[田浩浩](https://github.com/llitfkitfk) 审校:李颖杰)
';