首页 > 其他分享 >学习笔记292—docker api是什么

学习笔记292—docker api是什么

时间:2023-04-06 09:45:59浏览次数:56  
标签:api python 我们 API docker 292 Docker

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电脑。

一、什么是API

1. 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 API
  • Docker Hub API
  • Docker Remote API

1. 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,不然没开启,你是不能用的。具体开启的方法:

在 ExecStart=/usr/bin/dockerd 后面直接添加 -H tcp://0.0.0.0:8088 -H unix:///var/run/docker.sock (注意端口8088自己随便定义,别跟当前的冲突即可)

重启完成后,我们执行 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 API

1. 最简单的curl方式

CURL这个命令,我想大家都熟悉,默认linux下都自带安装。很多测试http的方法都可以直接使用 CURL的方式。

比如我们查看docker的images详细信息,就可以直接用curl 来调取:

这样显示会比较错乱无章,我们可以在命令后面加个 python -mjson.tool 格式化下

这样的结果格式就比较标准化,比较容易阅读。

查看所有containers容器:

创建一个containers容器:

这里创建一个mariadb数据库的容器,设置了密码是123456,监听端口是3306

启动/停止/重启 一个containers容器:

具体还有很多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. 开始使用

这是一个很简单的使用例子,我们可以分析下:

第一行表示引入第三方库docker。

第二行用于配置Docker服务端的基本信息,包含了base_url(Docker服务端的地址)以及version(auto可以自动检查docker的版本)。

第三行则是相当于运行了一个docker run ubuntu echo hello world的命令。

2.3. 进阶使用

总结: 现在很多企业都已经步入自动化运维时代了,所以掌握api的运用技巧和法则是非常有必要的。上面我们大概介绍了下docker api的入门,其实你要玩得非常好,这里有很大的灵活性和复杂性,不过这里就需要你一些脚本编程方面的知识了。

参考连接:https://www.php.cn/docker/486798.html

标签:api,python,我们,API,docker,292,Docker
From: https://www.cnblogs.com/hechangchun/p/17291669.html

相关文章

  • [FAQ] 没有docker用户组,怎么让普通用户有权限操作docker
     如果没有docker用户组,可以通过以下步骤让普通用户有权限操作docker:创建一个名为docker的用户组:sudogroupadddocker将当前用户添加到docker用户组中:sudousermod-aGdocker$USER重新登录以使更改生效。验证用户是否已经添加到docker组中:id-nG。如果显示了docker组,则......
  • 群晖的docker设置MySQL从库功能
    群晖的docker设置MySQL从库功能主库与正常设置无区别,新建账号并授权拷贝binlog即可,注意密码强度,最好不要给任意IP访问权限;数据安全无小事以镜像为8.0.30为例在高级设置中添加环境变量即可MYSQL_ROOT_PASSWORD=e0a1021570daa600MYSQL_ALLOW_EMPTY_PASSWORD=no注意为方便修......
  • 微信小程序入门教程(一)API接口数据记录
    今天测试用小程序调用API接口,发现有些数据打印都是对象,怎么全部打印详细点来小程序代码:httpsearch:function(name,offset,type,cb){wx.request({url:'https://www.tinywan.com/api/wechat/songsSearch',data:{name:name,offset:o......
  • Docker 查看Image镜像的Dockerfile方法
    Dokcer中使用的Image镜像可能别人写好,我们下载来直接使用,但有些情况可能不能满足我们的需求,那就需要修改镜像,一般可以通过在容器中修改,之后在生成镜像,但有时则需要通过写Dockerfile来重新生成。本文主要介绍Docker中查看Image镜像的Dockerfile的方法。原文地址:Docker查看Image镜......
  • docker与k8s的区别
    docker:开源的应用容器引擎,允许开发人员将其应用和依赖打包成可移植的镜像,然后发布到任何流行的linux或windows机器上,也能实现虚拟化。kubernetes:谷歌开发的容器集群管理系统。在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高......
  • docker-compose 通过NGINX快速搭建负载均衡的Tomcat集群
                 docker-compose通过NGINX快速搭建负载均衡的Tomcat集群从标题也可以看出,需要三个软件,docker-compose,docker-ce(docker的运行环境),Tomcat的镜像。docker-compose和docker的安装就不用说了,都可以离线安装,安装方法见博客:(docker-compose安装方......
  • Docker yum install的时候报错:Rpmdb checksum is invalid: dCDPT(pkg checksums): ...
    闲话就不说了,直接上Dockerfile:FROMhub.c.163.com/library/centos:7.2.1511MAINTAINERbyzsk_johnRUNyum-yinstallvimnet-tools&&yumcleanallEXPOSE22CMD["/bin/bash","-D"]注意一点,如果拆开写RUN,也就是yuminstallvim-y&&yuminst......
  • Docker制作一个镜像完整过程
    前言以制作CentOS镜像为例,讲述对镜像自定义,打包以及推送的远程仓库的过程,步骤都比较简单可以快速上手。创建步骤创建CentOS基础镜像创建构建目录和Dockerfile,在Dockerfile中编辑镜像相关设置,参考菜鸟教程-Dockerfile。echo"在当前用户目录下创建创建目录docker/build/cent......
  • 第四十一篇 vue - 进阶主题 - 组合式 API 常见问答
    什么是组合式API?组合式API(CompositionAPI)是一系列API的集合,使我们可以使用函数而不是声明选项的方式书写Vue组件。它是一个概括性的术语,涵盖了以下方面的API1、响应式API例如ref()和reactive(),使我们可以直接创建响应式状态、计算属性和侦听器。2、生命......
  • 如何在ubuntu22下安装docker版的golang来编译go语言写的代码
    为了让我们的ubuntu22系统更干净清爽我们使用docker首先使用snapinstalldocker安装docker后即可使用docker了docker命令的使用方法1:将你的代码下载到用户目录(~)下面(例如~/github/xixi/...)2:使用cd命令进到你代码需要运行gobuild的文件夹3:然后使用下面命令即可给你的代码编译......