![5b7a2c1e43d275548e3f422dcfb4ebb6.gif](https://i-blog.csdnimg.cn/blog_migrate/e62ec5c3c592fbc56b9554e52cefa4a9.gif)
阅读本文约需要10分钟,您可以先关注我们,避免下次无法找到。
今天我们继续来学习Docker技术,本篇文章主要介绍Docker API接口,通过这些接口可以实现Docker批量的远程管控,同时还可以基于这些接口自研Docker业务编排平台。
下面就由成哥来介绍Docker API接口的具体使用吧!
01 开启Docker API远程访问
Docker Remote API 是由 Docker 守护进程提供的。在默认情况下,Docker守护进程会绑定到一个所在宿主机的套接字,即unix:///var/run/docker.sock。但此默认情况下,只能查询在同一宿主机上运行Docker的Remote API,如果我们想远程访问Remote API,就需要将Docker守护进程绑定到一个网络接口上。可以通过编辑守护进程的启动配置文件来开启Docker的远程访问,具体操作如下:
![f7be1c03db320b7db7b17eb7662c630c.png](https://i-blog.csdnimg.cn/blog_migrate/d39df74feb6a4c944374ab1dcb46cb0f.jpeg)
![6313ccbdaa563f1a875ba9c358101414.png](https://i-blog.csdnimg.cn/blog_migrate/0114ddee2ec8605a4e0b68f69694caf0.jpeg)
现在我们通过浏览器验证一下接口是否可以正常访问,操作如下:
![bcddac9dba8da624abc728f2a71f42c6.png](https://i-blog.csdnimg.cn/blog_migrate/909fe48404f987a16805999165801b81.jpeg)
02 常用的Docker API接口
(1)获取容器列表
通过该接口可以获取所有容器,接口URL如下:
1. # 接口URL,请求方式:GET 2. /containers/json
接口返回格式如下
![34b5d58fd8f081ccf18b60107a31630f.png](https://i-blog.csdnimg.cn/blog_migrate/847cf3d7b6ef1028a18f3deab0ecc6c0.jpeg)
该接口包含4个类型的查询参数
1)all,布尔型默认值为false,接口调用时默认只拉状态为running的容器,如果置位true可以拉取全部容器,包含已经停止了的容器
2)limit,整形拉取最近创建的几个容器。列如设为3则表示拉取最近创建的3个容器
3)size,布尔型默认值为false,如果置位true则拉取的容器可以包含容器大小如下所示
![167243dd40cc07bf36eb0f3d4e1d0058.png](https://i-blog.csdnimg.cn/blog_migrate/2d9608fc6c3ddc641390a7ea0b2b60f0.jpeg)
4)filters后面跟字典,可以针对多个条件进行筛选,如容器ID、容器状态等,下面示例通过容器ID进行容器数据筛选
![8de0bd3a1827aace07891d52acd448dd.png](https://i-blog.csdnimg.cn/blog_migrate/26419cac4e855593d448160715b12856.jpeg)
(2)创建容器
创建容器接口URL如下所示
1. # 接口URL,请求方式:POST 2. /containers/create
我们现在创建一个容器test_api,具体操作如下
![085604e979b817121498b019ea9f044c.png](https://i-blog.csdnimg.cn/blog_migrate/cc5c9d59026abbe7490377264fe6a367.jpeg)
我们看看机器上我们的容器是否创建成功
![d989934740ef0c2b1171ed06a851f3e2.png](https://i-blog.csdnimg.cn/blog_migrate/f51e5994e88c02970d8aee71b64dad07.jpeg)
(3)删除容器
删除容器的接口URL具体如下所示
1. # 接口url,方法为:delete 2. /containers/{id}
我们来删除容器elegant_saha,具体操作如下
![381c45f857d59b38043f327d78be79a3.png](https://i-blog.csdnimg.cn/blog_migrate/ad84312d8825adcf2894bd6d467551d4.jpeg)
![d112ad9af9222be8ce64da2812995ee6.png](https://i-blog.csdnimg.cn/blog_migrate/84cb31bef898d15e05d8aa5a46cb07d3.jpeg)
![dca5efaa2445590b6032f58e054040bc.png](https://i-blog.csdnimg.cn/blog_migrate/5bd66f3763ffa649992561212662d970.jpeg)
容器删除接口常用的参数如下:
1)v,布尔值默认为false,用于指定删除容器时同时删除其关联的存储卷
2)force,布尔值默认为false,如果设为true将强制删除指定的容器,不然运行中的容器删除时会报错
(4)获取镜像列表
该接口用于获取容器镜像列表,具体接口内容如下
1. # 接口url,方法为:get 2. /images/json
通过该接口拉取镜像列表具体操作如下
![4a89a3bcaa17d289b9e774b93ecc2272.png](https://i-blog.csdnimg.cn/blog_migrate/f9ea19d86fb68ff628eda5eec3b414b6.jpeg)
(5)从Docker Hub拉取镜像
拉取镜像的具体接口如下
1. # 接口url,方法为:post 2. /images/create
![eb820c8109b2e1f7cb3f037000ecda16.png](https://i-blog.csdnimg.cn/blog_migrate/276bf2cfa9825341914eea5a2a4a9811.jpeg)
(6)删除镜像
删除镜像的接口具体如下所示
1. # 接口url,方法为:delete 2. /images/{name}
我们删除镜像test_nginx,具体操作如下所示
![5eaa31c1d98a1a1f97b13cad3f9d4cde.png](https://i-blog.csdnimg.cn/blog_migrate/fff1fb295c1141fcd973c6a1d7b7cd2f.jpeg)
![5c9e2145e58e33f3d5bde36f86c25f85.png](https://i-blog.csdnimg.cn/blog_migrate/d3fd67724d7af8a6067d1f31dd6fbd10.jpeg)
![1864635f11938176404bb23715f8b580.png](https://i-blog.csdnimg.cn/blog_migrate/d133932cc3f309ff5397d741c67877bc.jpeg)
(7)获取容器网络列表
获取容器网络列表接口具体如下所示
1. # 接口url,方法为:get 2. /networks
我们拉取主机上所有创建的网络,具体操作如下
![36929794a5ef4840ce0efbbfeb2ba6c7.png](https://i-blog.csdnimg.cn/blog_migrate/e23f1b992f393e1d4b88b3aa558ce67e.jpeg)
(8)创建容器网络
容器网络创建的接口具体如下所示
1. # 接口url,方法为:post 2. /networks/create
我们创建一个名为api_bridge类型为bridge的网络,具体操作如下:
![0111c2e2af22ff2d66c6182a973af84a.png](https://i-blog.csdnimg.cn/blog_migrate/c1e501630c085edf5aef0bf45abd72de.jpeg)
![eac795b6a61c30dbf80b6c88ae0758fb.png](https://i-blog.csdnimg.cn/blog_migrate/c2bacf9fe0adb1f12541f70a17e5d070.jpeg)
(9)容器与网络绑定
容器与网络绑定的具体接口如下
1. # 接口url,方法为:post 2. /networks/{id/name}/connect
我们将刚才创建的容器网络与容器test1进行绑定具体操作如下
![620ca756f6fc738ef3dc0088b01cc890.png](https://i-blog.csdnimg.cn/blog_migrate/2d76e3be6e64e77bc378dfdc67f34b80.jpeg)
![ebc79ff3479550f91b8df8b723fa2ded.png](https://i-blog.csdnimg.cn/blog_migrate/05438f6667b272debaa1a9fb9d10fea8.jpeg)
(10)删除容器网络
删除容器网络的接口具体如下
1. # 接口url,方法为:delete 2. /networks/{id/name}
我们删除名称为docker_gwbridge的容器网络具体操作如下
![80a11fc663baf22ca9a8588cb78520ac.png](https://i-blog.csdnimg.cn/blog_migrate/6cbff6ffde5b6d0ab04c3b042427dd6b.jpeg)
![dce6f18b850c28a134c5e262645451eb.png](https://i-blog.csdnimg.cn/blog_migrate/69672e50b4298905c956fbf2741fcdc8.jpeg)
![cfc8ec232faadc0c91bb0c4078fb4c6d.png](https://i-blog.csdnimg.cn/blog_migrate/97c0885c66bd1a942bfb51e335a2cd87.jpeg)
(11)其它常用命令汇总
1. # 容器操作相关接口 2. docker container inspect:GET /containers/(id)/json 3. docker container top:GET /containers/(id)/top 4. docker container logs:GET /containers/(id)/logs 5. docker container export:GET /containers/(id)/export 6. docker container start:POST /containers/(id)/start 7. docker container attach:POST /containers/(id)/attach 8. 9. # 镜像操作相关接口 10. docker image inspect:GET /images/(name)/json 11. docker image tag:POST /images/(name)/tag 12. docker image push: POST /images/(name)/push 13. docker image build:POST /build 14. docker search:GET /images/search
至此我们DockerApi接口的内容就全部讲完了,大家有什么问题可以在下方留言讨论,最后如果喜欢不要忘了点赞、关注与转发哦!
--END--
@IT管理局专注计算机领域技术、大学生活、学习方法、求职招聘、职业规划、职场感悟等类型的原创内容。期待与你相遇,和你一同成长。
相关文章推荐:
- IT工程师都需要掌握的容器技术之Docker容器管理
- IT工程师都需要掌握的容器技术之扫盲篇
![d49fb2136ecb0904df16be023236e73b.gif](https://i-blog.csdnimg.cn/blog_migrate/a435aa6c17dcb6030d5273290d1283c9.gif)