您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 江门分类信息网,免费分类信息发布

docker api是什么

2024/6/24 4:11:51发布61次查看
docker api指的是docker的应用程序接口,是软件系统不同组成部分衔接的约定,docker主要有三大对外api:1、docker registry api;2、docker hub api;3、docker remote api。
本教程操作环境:linux5.9.8系统、docker-1.13.1版、dell g3电脑。
一、什么是api1. api具体是什么?
api这个词在维基百科里解释是这样的:应用程序接口(英语:application programming interface,缩写作 api),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。看完这个解释估计你还是有点懵逼,不过没关系,下面我们会用通俗的语言来介绍什么是api。
我们每个人都有手机,当手机没电了我们肯定会找固定的充电器和充电线来充电。苹果的用苹果,安卓的用安卓。但是你肯定不会用安卓的线去充苹果的手机,这道理很简单,因为你的苹果手机是lightning 接口,安卓的是micro接口。你要想充电或者对你手机传输数据,那么必须买合适的充电线和数据线, 这是对于接口最简单易懂的认识。
类似的,程序的接口也是如此。每个程序都有固定对外的标准接口,这个接口由开发这个程序的开发者定义的,你要想连接它们,那么就应该遵循它们的接口标准。
2. 什么是rest
现在学习api 经常看到一个词叫rest,英文全称是representational state transfer。那么什么是rest呢? rest一词是apache 基金会主席roy fielding博士提出来的,中文意思叫表现层状态转化。中文不太好理解,不过我们从下面几个方面去认识你就大概能明白什么是rest。
2.1. 什么是表现层?
这里的表现层指的是资源的表现层,所谓资源,就是网络上的一个具体信息。一个文本,一部电影,一个服务都可以算作一资源。那么这些资源用什么来确定和表现呢?那就得用到uri,比如我们下载一个电影,肯定有对应的uri地址,我们看一部网络小说,也有对应的uri地址。而且这个地址是唯一的,独一无二的。资源用uri标识了,我们可以理解为这个资源已经在网络上“表现”了。所以说到这里,表现层的意思其实就是把资源具体呈现出来的形式。
2.2. 什么是状态转化?
常识里,我们要把一物体发生状态改变,肯定需要一些操作和手段。网络上的资源也是如此,你下载一部电影,首先得下载,然后才能打开欣赏。下载获取都需要走http协议,http协议里面,四个基本的操作方式:get、post、put、delete(获取,新建,更新,删除)。通过这基本的四种方法可以对网络上的资源进行一些状态转化操作。
所以,rest 就是表现层的状态转化,大家分开理解上面两点然后结合在一起就明白了。简单粗暴的可以理解为:方法 + uri资源。
get /movie/war/珍珠港
delete /movie/war/珍珠港
...
二、docker api种类docker 的api也遵循rest的风格,因此我们了解了上面两点后,我们开始学习docker本身api的相关知识。
首先,我们把docker当作一种资源,我们可以通过api来对docker进行操作,操作的方法也是http的那几种方法。
其次,我们要了解docker有哪些对外可使用的api,这里docker官方主要有三大对外api
docker registry apidocker hub apidocker remote api1. docker registry api
这个是docker镜像仓库的api,通过操作这套api,你可以自由的自动化、程序化的管理你的镜像仓库。
2. docker hub api
docker hub api是用户管理操作的api,docker hub是使用校验和公共 namespaces 的方式来存储账户信息、认证账户、进行账户授权。api同时也允许操作相关的用户仓库和 library 仓库。
3. docker remote api
这套api用于控制主机 docker 服务端的 api,等价于 docker命令行客户端。 有了它,你能远程操作docker容器,更重要的是你可以通过程序自动化运维docker进程。
三、api使用前准备前面我们说过,操作rest api用的就是http的那些方法。那么具体怎么使用这些方法呢?这里我们提供几种通用的方式来操作调用下docker 的api,然后体验下。在体验之前,我们需要开启docker rest api,不然没开启,你是不能用的。具体开启的方法:
$ vim /usr/lib/systemd/system/docker.service
在 execstart=/usr/bin/dockerd 后面直接添加 -h tcp://0.0.0.0:8088 -h unix:///var/run/docker.sock (注意端口8088自己随便定义,别跟当前的冲突即可)
$ systemctl daemon-reload$ systemctl restart docker
重启完成后,我们执行 curl 127.0.0.1:8088/info | python -mjson.tool 命令即可查看docker的状态状态(json形式,python -mjson.tool借用了这个工具,这样让json格式化,好阅读)
启用了docker api后,我们还有个问题,那就是在哪查询docker 现有的api?既然docker提供了那3大api库:docker registry api、docker hub api、docker remote api。那么在哪里可以查看具体详细的api,比如docker registry api 下面到底有哪些api地址?有查询镜像的api吗?有删除的吗?其实这些都有的,我们可以直接去官网api手册里查看即可,地址就是:https://docs.docker.com/engine/api/v1.38/ (想看什么版本的把最后的v1.38 替换成目标版本号即可)
这里要注意的是,官方不再建议使用api v1.12之前的版本,建议使用v1.24 or 更高的版本。
查看本地docker api版本可以用 docker version 命令:
四、如何操作docker api1. 最简单的curl方式
curl这个命令,我想大家都熟悉,默认linux下都自带安装。很多测试http的方法都可以直接使用 curl的方式。
比如我们查看docker的images详细信息,就可以直接用curl 来调取:
$ curl -x get http://127.0.0.1:8088/images/json
这样显示会比较错乱无章,我们可以在命令后面加个 python -mjson.tool 格式化下
$ curl -x get http://127.0.0.1:8088/images/json | python -mjson.tool
这样的结果格式就比较标准化,比较容易阅读。
查看所有containers容器:
$ curl -x get http://127.0.0.1:8088/containers/json | python -mjson.tool
创建一个containers容器:
这里创建一个mariadb数据库的容器,设置了密码是123456,监听端口是3306
$ curl -x post -h "content-type: application/json" -d '{ "image": "mariadb", "env": ["mysql_root_password=123456"], "exposedports": { "3306/tcp": {} }, "hostconfig": { "portbindings": { "3306/tcp": [{"hostip": "","hostport": "3306"}] } }, "networksettings": { "ports": { "5000/tcp": [{"hostip": "0.0.0.0","hostport": "3306"}] } }}' http://127.0.0.1:8088/containers/create
启动/停止/重启 一个containers容器:
$ curl -x post http://127.0.0.1:8088/containers/{id}/start (注意这里是post方法)$ curl -x post http://127.0.0.1:8088/containers/{id}/stop (注意这里是post方法)$ curl -x post http://127.0.0.1:8088/containers/{id}/restart (注意这里是post方法)...
具体还有很多api方法,大家都可以登录上面提到的链接进行查看
https://docs.docker.com/engine/api/v1.38
2. python程序脚本方式
python 非常强大,这个大家都认可。现在很多自动化场景都是通过python加载第三方对应的库,然后编写业务逻辑自动化方式devops运维。docker给python也提供了一个非常强大的库,名字就叫做docker。我们可以登录官方的python sdk地址来学习认识python如何具体操作docker。
地址是:https://docker-py.readthedocs.io/en/stable/
2.1. 安装docker python库
$ pip install docker
2.2. 开始使用
import dockerclient = docker.dockerclient(base_url='unix://var/run/docker.sock', version="auto")client.containers.run("ubuntu", "echo hello world")
这是一个很简单的使用例子,我们可以分析下:
第一行表示引入第三方库docker。
第二行用于配置docker服务端的基本信息,包含了base_url(docker服务端的地址)以及version(auto可以自动检查docker的版本)。
第三行则是相当于运行了一个docker run ubuntu echo hello world的命令。
2.3. 进阶使用
import dockerclient = docker.dockerclient(base_url="tcp://ip:port")client.images.list() # 类似docker images命令,显示image的信息列表client.containers.list() # 类似docker ps命令client.containers.list(all=true) # 类似docker ps -a命令container = client.containers.get(container_id) # 获取daodocker容器,这里container_id 是你要输入的具体容器idcontainer.start() # 类似docker start 传入具体的容器id ,开启容器
总结: 现在很多企业都已经步入自动化运维时代了,所以掌握api的运用技巧和法则是非常有必要的。上面我们大概介绍了下docker api的入门,其实你要玩得非常好,这里有很大的灵活性和复杂性,不过这里就需要你一些脚本编程方面的知识了。
推荐学习:《docker视频教程》
以上就是docker api是什么的详细内容。
江门分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录