![99db9e6a55c42200f43d7b83e5ad2f28.gif](https://i-blog.csdnimg.cn/blog_migrate/0161bf8126917a980178b709c13cf5dd.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的远程访问,具体操作如下:
![0ddbfc3e6841ec9e53985ea8a44d43b6.png](https://i-blog.csdnimg.cn/blog_migrate/924c4e4e2469bcd8be1b87150d5f4db8.jpeg)
![f3e1ada9d3642977388d81edb273fc3a.png](https://i-blog.csdnimg.cn/blog_migrate/ec19b7f35b1dcf0c10d4273c99927a17.jpeg)
现在我们通过浏览器验证一下接口是否可以正常访问,操作如下:
![6106272ba80d88af6a80fcb5126d923f.png](https://i-blog.csdnimg.cn/blog_migrate/421afbbd76c73a4852fb407ec4b3ac7c.jpeg)
02 常用的Docker API接口
(1)获取容器列表
通过该接口可以获取所有容器,接口URL如下:
1. # 接口URL,请求方式:GET 2. /containers/json
接口返回格式如下
![5006bf4f9ce06b3c05b84af5165f8548.png](https://i-blog.csdnimg.cn/blog_migrate/5041d870e7a043d7bb92956db2cd601c.jpeg)
该接口包含4个类型的查询参数
1)all,布尔型默认值为false,接口调用时默认只拉状态为running的容器,如果置位true可以拉取全部容器,包含已经停止了的容器
2)limit,整形拉取最近创建的几个容器。列如设为3则表示拉取最近创建的3个容器
3)size,布尔型默认值为false,如果置位true则拉取的容器可以包含容器大小如下所示
![299526290180207181cb9509efcec9b3.png](https://i-blog.csdnimg.cn/blog_migrate/718a200aa78f46fe214a34aaf0f72496.jpeg)
4)filters后面跟字典,可以针对多个条件进行筛选,如容器ID、容器状态等,下面示例通过容器ID进行容器数据筛选
![441bb5af8ce5ae6ea7dd313bea20d335.png](https://i-blog.csdnimg.cn/blog_migrate/a01938c4d955b59867770fc33fd6505e.jpeg)
(2)创建容器
创建容器接口URL如下所示
1. # 接口URL,请求方式:POST 2. /containers/create
我们现在创建一个容器test_api,具体操作如下
![4acac07ff175b6264d02bb9b5f7f51a7.png](https://i-blog.csdnimg.cn/blog_migrate/a66c2a5cde1fd12d582e79842d455c77.jpeg)
我们看看机器上我们的容器是否创建成功
![fd9c5b09511f2334d8a785c8d5e414b0.png](https://i-blog.csdnimg.cn/blog_migrate/2c0d374dede06e813e0261659bee57b7.jpeg)
(3)删除容器
删除容器的接口URL具体如下所示
1. # 接口url,方法为:delete 2. /containers/{id}
我们来删除容器elegant_saha,具体操作如下
![16c18c020fa055e64d554a6fb7a8d358.png](https://i-blog.csdnimg.cn/blog_migrate/9a979651310f1191eb1fb9b8889d6f11.jpeg)
![46dc65f94ffcc599c8e31eac1dd30abb.png](https://i-blog.csdnimg.cn/blog_migrate/965f42e7cb848a873830a84db38da632.jpeg)
![78d2ba49cdb4dcce1509f740fa56a678.png](https://i-blog.csdnimg.cn/blog_migrate/be5fecdd579416c055054ed2d18c3c20.jpeg)
容器删除接口常用的参数如下:
1)v,布尔值默认为false,用于指定删除容器时同时删除其关联的存储卷
2)force,布尔值默认为false,如果设为true将强制删除指定的容器,不然运行中的容器删除时会报错
(4)获取镜像列表
该接口用于获取容器镜像列表,具体接口内容如下
1. # 接口url,方法为:get 2. /images/json
通过该接口拉取镜像列表具体操作如下
![428e3dd2984d02035a19dd1b4ca0667b.png](https://i-blog.csdnimg.cn/blog_migrate/68213402ef48e26a44a0122e740047b9.jpeg)
(5)从Docker Hub拉取镜像
拉取镜像的具体接口如下
1. # 接口url,方法为:post 2. /images/create
![5bbb32351d66824c7086e85feb29a851.png](https://i-blog.csdnimg.cn/blog_migrate/ae174931982315192ef16afa0f34b049.jpeg)
(6)删除镜像
删除镜像的接口具体如下所示
1. # 接口url,方法为:delete 2. /images/{name}
我们删除镜像test_nginx,具体操作如下所示
![852856bb5666e6535e17476d5d4f3866.png](https://i-blog.csdnimg.cn/blog_migrate/1ee495ee53bc8a40d0d1bf6cc3faa143.jpeg)
![3a75d63883c5b229ca5d9a962b40e737.png](https://i-blog.csdnimg.cn/blog_migrate/89987d8cb9e00fb174c4a567b257fc7e.jpeg)
![ebd7c6c05ea67a17909e173556df4465.png](https://i-blog.csdnimg.cn/blog_migrate/1302fbea677407cd7b55d2b86e4faa65.jpeg)
(7)获取容器网络列表
获取容器网络列表接口具体如下所示
1. # 接口url,方法为:get 2. /networks
我们拉取主机上所有创建的网络,具体操作如下
![21d59c02b4f44dbe121e4ab2c8f77eb6.png](https://i-blog.csdnimg.cn/blog_migrate/57a33a5efdc8ef0d3f61f0b05eb6a44e.jpeg)
(8)创建容器网络
容器网络创建的接口具体如下所示
1. # 接口url,方法为:post 2. /networks/create
我们创建一个名为api_bridge类型为bridge的网络,具体操作如下:
![21bd77756932cd006961009b1f5fcbb3.png](https://i-blog.csdnimg.cn/blog_migrate/1007a59c8b477cdf42808e19beb1e1a0.jpeg)
![704125b1e5443cbf116a333a812fb0b8.png](https://i-blog.csdnimg.cn/blog_migrate/f3f89b6edf5b62b647fe2b35d85bfd29.jpeg)
(9)容器与网络绑定
容器与网络绑定的具体接口如下
1. # 接口url,方法为:post 2. /networks/{id/name}/connect
我们将刚才创建的容器网络与容器test1进行绑定具体操作如下
![ee3abc6e99e3596d796373e176820b09.png](https://i-blog.csdnimg.cn/blog_migrate/0002ea41b9988f9ca042b45cc5b410b0.jpeg)
![0ea9c6fed6aee5cdcb3ba793d4289b82.png](https://i-blog.csdnimg.cn/blog_migrate/5d071b487882702959b70bdba30a2477.jpeg)
(10)删除容器网络
删除容器网络的接口具体如下
1. # 接口url,方法为:delete 2. /networks/{id/name}
我们删除名称为docker_gwbridge的容器网络具体操作如下
![ee176f636f6608ff95abec3f71518b3a.png](https://i-blog.csdnimg.cn/blog_migrate/b4cf4f4b83079bcd2f582a8b2db22a97.jpeg)
![77218c067226cb90888edf1c7eb67376.png](https://i-blog.csdnimg.cn/blog_migrate/1cce4c154c50afabab8acd6224726365.jpeg)
![d3d2a948c2175ff8be13d092d6180e87.png](https://i-blog.csdnimg.cn/blog_migrate/da04acbce9aa13c055c12b06a6b88076.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工程师都需要掌握的容器技术之扫盲篇
![56ca16299e9efdc97302612c8e8dd93a.gif](https://i-blog.csdnimg.cn/blog_migrate/e033ffb4f61a90cb04c37e74ce513818.gif)