Docker容器与虚拟化技术:Docker架构、镜像操作

news2024/12/23 13:33:49

目录

一、理论

1.Doker概述

2.Docker核心概念

3.Docker安装

4.Docker的镜像管理命令

二、实验

1.Docker安装

2.查看Docker信息

3.Docker的镜像管理命令

三、问题

1.如何注册Docker账号

 2.如何设置Docker公共存储库

四、总结


一、理论

1.Doker概述

(1) IT架构

裸金属 → 虚拟机 → 容器→ 函数化、代码化

云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务、Serverless(无服务),无论这些技术应用在哪些场景,降低成本、提升效率是云服务永恒的主题。

① 运行物理机,也称为裸金属

② 虚拟机VM,可以在一台物理机上创建多个虚拟机,并把物理配置分发成多个虚拟配置

缺点:性能损耗大,大约损耗50%
 

虚拟机常用软件:
VMware workstation(windows)
vm Sphere+ESXI (Windows server)
KVM(linux内核)

③ 容器 (常用软件:docker、podman、rocket、container)

  • 容器内部自身有一个小型操作系统

④ 函数(函数化,代码化)

(2)Docker初始
Docker是一个开源的应用容器引擎,基于go语言开发并遵守了apache2.0协议开源。

Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。

Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker的Logo:

  • Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
  • 鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

Docker的设计宗旨:

Docker的设计宗旨:Build,Ship and Run Any App,Anywhere

即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。
docker是创建容器的工具。应用运行在容器中,每个容器都有一致的运行环境,所以可以在任何主机中运行。即实现“一次封装,到处运行”的目的。

(3)容器的特点

容器化越来越受欢迎,因为容器是:

灵活:即使是最复杂的应用也可以集装箱化。

轻量级:容器利用并共享主机内核。

可互换:可以即时部署更新和升级。

便携式:可以在本地构建,部署到云,并在任何地方运行。

可扩展:可以增加并自动分发容器副本。

可堆叠:可以垂直和即时堆叠服务。

(4)Docker容器与虚拟机的区别

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用共他任何可执行文件的内存,非常轻量。

虚拟机运行的是一个完整的操作系统,每个虚拟机使用独立的内核,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

 

① docker就相当于宿主机的一个进程,所以损耗微乎其微。

② 虚拟机和操作系统之间是hypervisor,虚拟化管理程序,虚拟化各种硬件资源,这中间就会有资源损耗。

 (5)容器在内核中支持2种重要技术

docker本质就是宿主机的一个进程,docker是通过 namespace 实现资源隔离,通过 cgroup 实现资源限制(限制硬件资源,限制2个容器相互之间抢资源),通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。

linux六大namespace(命名空间):
 

 

2.Docker核心概念

(1)镜像

Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。

通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。

(2)容器

Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。

可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

(3)仓库

Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。
Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 目录下。
 

3.Docker安装

(1)YUM安装Docker

目前 Docker 只能支持 64 位系统。

#关闭防火墙和selinux
 systemctl stop firewalld.service
 setenforce 0
 ​
 #安装依赖包
 yum install -y yum-utils device-mapper-persistent-data lvm2 
 --------------------------------------------------------------------------------------------
 #yum-utils:提供了 yum-config-manager 工具。
 #device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,
 它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
 #device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
 --------------------------------------------------------------------------------------------
 ​
 #设置阿里云镜像源
 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
 ​
 #安装 Docker-CE并设置为开机自动启动
 yum install -y docker-ce      #docker-ce-cli、containerd.io 会作为依赖包被安装
 ​
 systemctl start docker.service
 systemctl enable docker.service 

(2) 查看Docker信息

#查看 docker 版本信息
 docker version
 #注意:Yum安装默认安装最新版本,目前最新版本是2020版本。但工作中不会用这么新的版本,前一个版本是2019版本。
 ​
 #docker信息查看
 docker info
 //查看的部分信息如下:
 Client:
  Context:    default
  Debug Mode: false
  Plugins:
   app: Docker App (Docker Inc., v0.9.1-beta3)
   buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
   scan: Docker Scan (Docker Inc., v0.17.0)
 ​
 Server:
  Containers: 0                #容器数量
   Running: 0
   Paused: 0
   Stopped: 0
  Images: 0                    #镜像数量
  Server Version: 20.10.17     #server版本
  Storage Driver: overlay2     #docker使用的是overlay2 文件驱动
   Backing Filesystem: xfs     #宿主机上的底层文件系统
   Supports d_type: true
   Native Overlay Diff: true
   userxattr: false
  Logging Driver: json-file
  Cgroup Driver: cgroupfs      #cgroups 驱动,默认为cgroupfs,也可以修改为systemd
  Cgroup Version: 1
  Plugins:
   Volume: local
   Network: bridge host ipvlan macvlan null overlay
   Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
  Swarm: inactive

4.Docker的镜像管理命令

(1) 搜索镜像

 格式:docker search 关键字(镜像名称或仓库名)
 ​
 docker search nginx        #搜索nginx的镜像
 ​
 docker search clearlinux   #搜索指定仓库clearlinux中的镜像

(2) 获取镜像(下载镜像)

 格式:docker pull 镜像名称[:标签]
 #如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 的镜像。
 ​
 docker pull nginx   #下载nginx镜像

(3) 镜像加速下载

 浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置
 ​
 mkdir -p /etc/docker
 tee /etc/docker/daemon.json <<-'EOF'
 {
   "registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"]   #写入自己的加速器地址
 }
 EOF
 ​
 systemctl daemon-reload      #重新加载
 systemctl restart docker     #重启docker
 ​
 docker info   #查看是否启用了镜像加速

登录阿里云平台,获取加速器地址:

配置镜像加速

(4) 查看本地有哪些镜像

镜像下载后存放在 /var/lib/docker

 #查看下载到本地的所有镜像
 docker images
 REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    89da1fb6dcb9   2 weeks ago   187MB

 ------------------------------------------------------------------------------------
 #注释:
 REPOSITORY:镜像属于的仓库;
 TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
 IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
 CREATED:镜像创建时间;
 VIRTUAL SIZE:镜像大小;
 ------------------------------------------------------------------------------------
 ​
 #镜像下载后存放在 /var/lib/docker 
 #查看下载的镜像文件信息
 cat /var/lib/docker/image/overlay2/repositories.json

(5) 查看镜像的详细信息( 获取容器/镜像的元数据 )

 格式:docker inspect 镜像ID号/容器ID     #根据镜像的唯一标识 ID 号,获取镜像详细信息
 ​
 docker inspect  89da1fb6dcb9 

(6) 为本地的镜像添加新的标签

添加标签后,镜像的ID号并不会改变。

 格式:docker tag 名称:[标签] [仓库名/]名称:[新标签]
 ​
 示例:
 docker tag nginx:latest nginx:web       #为nginx镜像添加web标签
 docker tag nginx:latest 仓库名/nginx:web   #为镜像添加库标识,方便上传到官方仓库,因为上传镜像时必须指定仓库
 docker images | grep nginx

(7) 删除镜像

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

 格式:
 docker rmi 镜像名:标签      #删除指定标签
 docker rmi 镜像ID -f       #删除指定镜像
 ​
 ​
 docker rmi nginx:web          #删除nginx镜像的web标签
 docker rmi ac826143758d       #删除镜像,该镜像只有单个标签的情况下
 docker rmi  89da1fb6dcb9  -f    #删除镜像,镜像有多个标签时需要加-f

(8) 批量删除镜像

 docker images        #查看本地所有镜像
 docker images -q     #查看本地有哪些镜像,只显示镜像ID
 docker rmi $(docker images -q) -f    #批量删除本地所有镜像

(9) 存出镜像:将镜像保存成为本地文件

将镜像保存成为本地文件,实际是将镜像打包成一个tar包。

 格式:docker save -o 存储文件名 存储的镜像
 docker save -o mynginx.tar nginx:latest     #打包镜像命名为mynginx.tar存在当前目录下
 ls -lh

(10) 载入镜像:将镜像文件导入到镜像库中

 格式:
 docker load < 存出的文件
 或者
 docker load -i 存出的文件
 ​
 #主机A通过scp命令将打包好镜像文件传给主机B,主机B将镜像文件导入到docker本地
 scp ~/mynginx.tar 192.168.204.141:/root/
 ​
 #主机B将镜像文件导入到镜像库中 
 docker load < mynginx.tar  或者   docker load -i mynginx.tar 

(11) 上传镜像(将镜像上传到官方仓库)
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号,hub.docker.com 。默认上传到公有仓库,其他人可以下载仓库中的镜像。如果想设置成私有仓库(仅自己可见),不允许其他人下载,需要付费。

可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。docker logout 命令进行登出。

在上传镜像之前,还需要先对本地镜像添加新的标签,在镜像名称前加上仓库名,然后再使用 docker push 命令进行上传。

 docker tag nginx:latest jiajianwei/nginx  #添加新的标签,在镜像名称前加上仓库名,jiajianwei为仓库名称
 ​
 docker login            #登录公共仓库
  Username:  #账号
  password:  #密码
 ​
 docker push jiajianwei/nginx     #上传镜像
 docker search jaijianwei        #搜索jiajianwei仓库中的镜像
 docker pull jiajianwei/nginx     #下载jiajianwei仓库中的镜像

 docker logout                   #登出公共仓库


 

二、实验

1.Docker安装

(1)YUM安装Docker

关闭防火墙和selinux

 安装依赖包

 设置阿里云镜像源

 安装 Docker-CE并设置为开机自动启动

 启动服务

2.查看Docker信息

查看 docker 版本信息

docker信息查看

3.Docker的镜像管理命令

(1)搜索镜像

搜索nginx的镜像,STARS越多,表示使用的人越多

  搜索指定仓库clearlinux中的镜像

 (2)获取镜像(下载镜像)

如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 的镜像。

 (3)镜像加速下载

查询

 配置镜像加速器(添加地址)

 重新加载、重启docker

 查看是否启用了镜像加速

 (4)查看本地有哪些镜像

查看下载到本地的所有镜像

查看下载的镜像文件信息

 (5)查看镜像的详细信息( 获取容器/镜像的元数据 )

 (6)为本地的镜像添加新的标签

添加标签后,镜像的ID号并不会改变。

为nginx镜像添加web标签

(7)删除镜像

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

删除镜像,镜像有多个标签时需要加-f

 

(8) 批量删除镜像

(9) 存出镜像:将镜像保存成为本地文件

将镜像保存成为本地文件,实际是将镜像打包成一个tar包。

(10) 载入镜像:将镜像文件导入到镜像库中

主机A通过scp命令将打包好镜像文件传给主机B,主机B将镜像文件导入到docker本地

 主机B将镜像文件导入到镜像库中

镜像ID和主机A中的一致

(11)上传镜像(将镜像上传到官方仓库)

添加新的标签,在镜像名称前加上仓库名,jiajianwei为仓库名称

 登录公共仓库

 上传镜像

 在自己的仓库中可以看到上传的镜像,默认上传到公共仓库中

私有仓库需要付费

登出公共仓库

 搜索jiajianwei仓库中的镜像

 下载jaijianwei仓库中的镜像

三、问题

1.如何注册Docker账号

(1)注册界面

 https://hub.docker.com

(2)填写完信息,出现人机验证

 (3)点击人机验证

 (4)邮箱验证

 2.如何设置Docker公共存储库

(1)公共存储库

公共存储库可用于托管Docker镜像,可供其他人使用。Docker Hub中提供的镜像就是一个例子。大多数镜像,如Centos,Ubuntu和Jenkins都可以公开提供给所有人。我们还可以通过将其发布到Docker Hub上的公共存储库中,使镜像可用。

(2)选择命名空间Namespace、创建存储库  Repository Name

 (3) 创建成功

四、总结

Docker是创建容器的工具。应用运行在容器中,每个容器都有一致的运行环境,所以可以在任何主机中运行。即实现“一次封装,到处运行”的目的。

Docker是基于go语言开发的开源容器引擎,可以在任何主机上运行容器应用,并且每个容器都是一个轻量级的虚拟机。实现“一次封装,到处运行”的目的。

Docker的三大核心概念:镜像、容器、仓库

镜像管理命令:

命令	                        作用
docker search         <仓库/镜像名>	搜索镜像
docker pull           <仓库/镜像名>	下载镜像
docker images	      查看本地的所有镜像
docker images -q	  只显示本地所有镜像的ID号
docker inspect        <镜像ID/容器ID>	查看镜像的详细信息( 获取镜像/容器的元数据 )
docker tag            名称:[标签] [仓库名/]名称:[新标签]	为本地的镜像添加新的标签docker rmi < 镜像名称:标签>
docker rmi            <镜像ID> -f	删除指定镜像
docker rmi $(docker images -q)	删除本地所有镜像
docker save -o        镜像文件.tar 镜像名称:标签	存出镜像:将镜像保存为本地文件
docker load -i[或<]   镜像文件	载入镜像:将镜像文件导入到镜像库中
docker login	      登录公共仓库docker hub
docker push           仓库名/镜像名:标签	上传镜像(将镜像上传到官方仓库)docker logout

镜像加速


mkdir -p /etc/docker

vim /etc/docker/daemon.json

镜像下载后存放位置

/var/lib/docker

查看下载的镜像文件信息

cat /var/lib/docker/image/overlay2/repositories.json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lua脚本对比redis事务区别是什么

redis官方对于lua脚本的解释&#xff1a;Redis使用同一个Lua解释器来执行所有命令&#xff0c;同时&#xff0c;Redis保证以一种原子性的方式来执行脚本&#xff1a;当lua脚本在执行的时候&#xff0c;不会有其他脚本和命令同时执行&#xff0c;这种语义类似于 MULTI/EXEC。从别…

Linux系统USB摄像头测试程序(二)_读取配置

1、收先安装gtk3&#xff0c;我的测试机器是ubutn16.04&#xff0c;只要执行下面的安装命令就可以了 apt-get install libgtk-3-dev 使用下列命令验证是否安装好gtk3&#xff1a; pkg-config --cflags --libs gtk-3.0 2、显示结果类似如下&#xff1a; -pthre…

哪种电容笔更好用?学生党开学值得买电容笔推荐

在过半个月就马上要到开学季了&#xff0c;随着平板电脑在大学校园内的普及&#xff0c;对电容笔提出了更高的要求。而苹果的正版电容笔产品&#xff0c;虽然有着强大的功能&#xff0c;但由于其具有更加昂贵的价格&#xff0c;让其只能作为一种学习和记录的工具&#xff0c;由…

VM中linux虚拟机配置桥接模式(虚拟机与宿主机网络互通)

VM虚拟机配置桥接模式&#xff0c;可以让虚拟机和物理主机一样存在于局域网中&#xff0c;可以和主机相通&#xff0c;和互联网相通&#xff0c;和局域网中其它主机相通。 vmware为我们提供了三种网络工作模式&#xff0c;它们分别是&#xff1a;Bridged&#xff08;桥接模式&…

Leetcode-每日一题【剑指 Offer 31. 栈的压入、弹出序列】

题目 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列&#xf…

途乐证券-KDJ分别代表什么?

KDJ是一种技能剖析东西&#xff0c;常见于股票、期货等商场中&#xff0c;它的全称是随机目标&#xff08;KDJ&#xff09;。KDJ目标包括三条线&#xff0c;分别为K线、D线和J线。那么&#xff0c;KDJ分别代表什么呢&#xff1f;本文将从多个视点进行剖析。 1. KDJ的简单介绍 …

Redis 基础知识

Redis 本文是在学习狂神的redis学习笔记 NoSQL NoSQL特点 解耦&#xff01; 1、方便扩展&#xff08;数据之间没有关系&#xff0c;很好扩展&#xff01;&#xff09; 2、大数据量高性能&#xff08;Redis一秒写8万次。读取11万&#xff0c;是一种细粒度的缓存&#xff0c;…

Spring对象装配

在spring中&#xff0c;Bean的执行流程为启动spring容器&#xff0c;实例化bean&#xff0c;将bean注册到spring容器中&#xff0c;将bean装配到需要的类中。 既然我们需要将bea装配到需要的类中&#xff0c;那么如何实现呢&#xff1f;这篇文章&#xff0c;将来阐述一下如何实…

喜盈门、梦百合竞相入局,智能床垫起风了

配图来自Canva可画 现代人的生活压力普遍大&#xff0c;熬夜、失眠是常有的事&#xff0c;提高睡眠质量十分的重要。近些年来&#xff0c;市面上出现了许多辅助睡眠的产品&#xff0c;比如香薰、褪黑素、蒸汽眼罩、降噪耳塞、助眠枕、睡眠监测app等助眠神器。可以说为了睡个好…

​LeetCode解法汇总833. 字符串中的查找与替换

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 你会得到一…

无服务器架构发布啦!

导读Serverless 1.15.2 已发布。The Serverless Framework (无服务器架构&#xff09;允许你自动扩展、按执行付费、将事件驱动的功能部署到任何云。 目前支持 AWS Lambda、Apache OpenWhisk、Microsoft Azure&#xff0c;并且正在扩展以支持其他云提供商。 Serverless 降低了…

无人直播系统究竟是怎么做的?效果如何?

继数字人直播火热之后&#xff0c;或者说数字人直播的热潮还未下来&#xff0c;无人直播又再次刷新了我们的认知&#xff0c;让我们的眼光不得不从数字人身上转移到无人直播上来&#xff0c;因为&#xff0c;跟数字人直播相比&#xff0c;无人直播的成本更低&#xff0c;它更加…

【Spring源码】Spring扩展点及顺序

Spring扩展点及顺序 01-调用BeanFactoryPostProcessor的构造器 02-调用了BeanFactoryPostProcessor的postProcessBeanFactory 03-调用了BeanPostProcessor构造器 04-调用InstantiationAwareBeanPostProcessor构造方法 05-调用了InstantiationAwareBeanPostProcessor接口的Befo…

拆分pdf文件最简单的方法?推荐这种拆分方法

拆分pdf文件最简单的方法&#xff1f;PDF文件拆分是指将一个PDF文件拆分成多个单独的文件。这种操作通常用于将大型PDF文档拆分成多个小文档&#xff0c;以便更方便地管理和共享。例如&#xff0c;如果你需要将一个大型PDF文档发送给多个人&#xff0c;但不希望他们看到整个文档…

mysql 索引 区分字符大小写

mysql 建立索引&#xff0c;特别是unique索引&#xff0c;是跟字符集、字符排序规则有关的。 对于utf8mb4_0900_ai_ci来说&#xff0c;0900代表Unicode 9.0的规范&#xff0c;ai表示accent insensitivity&#xff0c;也就是“不区分音调”&#xff0c;而ci表示case insensitiv…

途乐证券-越跌越买!港股又回调,资金却坚定买入,行情何时到来?

港股重复震动。 8月14日&#xff0c;港股三大指数再次跌落&#xff0c;截至收盘&#xff0c;恒生指数跌1.58%&#xff0c;报18773.55点&#xff0c;恒生科技指数跌1.52%&#xff0c;国企指数跌1.79%。 进入8月以来&#xff0c;港股继续跌落&#xff0c;恒生指数单月跌落6.5%&a…

德事隆® Txron®品牌介绍

德事隆 Txron 螺钉品牌介绍 一&#xff0e;品牌介绍&#xff1a; 创始于美国的百年紧固品牌——德事隆 Txron。 上世纪80年代初&#xff0c;德事隆品牌强势登场&#xff0c;采用美标及澳洲标准&#xff0c;主打高端防腐紧固件…

集群、负载均衡集群、高可用集群简介,LVS工作结构、工作模式、调度算法和haproxy/nginx模式拓扑介绍

一.集群的定义 1.定义 2.分类 &#xff08;1&#xff09;负载均衡集群&#xff08;LBC/LB&#xff09; &#xff08;2&#xff09;高可用集群&#xff08;HAC&#xff09; 二.使用集群的意义 1.高性价比和性能比 2.高可用性 3.可伸缩性强 4.持久和透明性高 三.常见的…

无涯教程-Perl - sethostent函数

描述 该函数应在首次调用gethostent之前调用。 STAYOPEN参数是可选的,在大多数系统上未使用。 当gethostent()检索主机数据库中下一行的信息时,然后sethostent设置(或重置)枚举到主机条目集的开头。 语法 以下是此函数的简单语法- sethostent STAYOPEN返回值 此函数不返回…

opencv进阶02-在图像上绘制多种几何图形

OpenCV 提供了方便的绘图功能&#xff0c;使用其中的绘图函数可以绘制直线、矩形、圆、椭圆等多种几何图形&#xff0c;还能在图像中的指定位置添加文字说明。 OpenCV 提供了绘制直线的函数 cv2.line()、绘制矩形的函数 cv2.rectangle()、绘制圆的函数cv2.circle()、绘制椭圆的…