Docker原理与镜像管理

news2024/11/16 3:07:57

目录

一、虚拟化概述

虚拟架构

1、寄居架构

2、原生架构

两者的区别

虚拟化产品

虚拟化类型

二、Docker概述

Logo含义

Docker的设计宗旨

Docker与虚拟机的区别

Docker核心概念

镜像

容器

仓库

Docker Engine(引擎)

Docker运行的原理

docker容器的生命周期

docker容器主要7个状态

暂停和停止状态区别

三、安装Docker

查看Docker版本信息

 查看docker信息

Docker镜像管理

1、配置镜像加速器(阿里云)

2、查看镜像信息

3、查看下载的镜像文件信息

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

5、搜索镜像

6、获取镜像

7、根据镜像的唯一标识ID号,获取镜像详细信息

8、为本地镜像添加新标签

9、删除镜像

10、批量删除镜像

11、存储镜像---将镜像保存成为本地文件

12、导入镜像---将镜像文件导入到镜像库中

13、上传镜像


一、虚拟化概述

将应用程序和系统内核资源进行解耦,以操作系统级别进行隔离,目的是提高资源利用率

虚拟架构


1、寄居架构


本机(真实操作系统)--> 虚拟化产品 --> 虚拟化操作系统或软件

虚拟化寄居架构是指在我们真实的操作系统上安装一个虚拟化软件,然后在虚拟化软件中安装虚拟系统。它稳定性不是很高当真实机宕掉后,这上面的虚拟系统都会宕掉。所以这种架构一般用于个人,比如个人搭建测试环境。

寄居架构的特点

  1. 简单、便于实现
  2. 相对于硬件独立
  3. 同一服务器上的虚拟机之间相互隔离
  4. 在一物理服务器上同时运行多个虚拟机

寄居架构的缺点

当宿主操作系统出现任何问题时,虚拟机操作系统都将无法使用。

2、原生架构


裸金属之上

服务器 --> 虚拟化产品

      虚拟化原生架构是虚拟软件直接安装在硬件上的,不会再依赖操作系统。这种架构一般应用在企业,应为它比较稳定。

裸金属架构的特点

  1. 有物理隔离特性,安全性能高
  2. 资源完全独占,没有性能消耗
  3. 完全继承了虚拟化云服务的运行特性
  4. 可以兼容其他云产品

裸金属架构的缺点

       硬件的兼容性,原生架构的虚拟机为了保持稳定性及微内核,不可能将所有硬件产品的驱动程序都放入。

两者的区别

  • 裸金属架构不需要操作系统,虚拟化软件直接安装在服务器上
  • 寄居架构需要操作系统,虚拟化软件需要安装在操作系统上 

虚拟化产品

vmware:

VMware  workstation(寄居架构)

vmware vsphere(原生架构)

kvm/openstack     linux环境虚拟机    私有云环境

xen   虚拟机监视器

esxi   裸金属之上    虚拟化系统

虚拟化类型

1、全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用

2、半虚拟化:需要修改操作系统

3、直通:直接使用物理硬件资源(需要支持,还不完善)

全虚拟化:kvm

半虚拟化:exsi

虚拟化功能

在一个操作系统内,模拟多个多个操作系统

以软件的方式模拟物理设备的功能

二、Docker概述

  • Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
  • Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
  • Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Logo含义

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。

鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

Docker的设计宗旨

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

       即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

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

  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级:容器利用并共享主机内核。
  • 可互换:可以即时部署更新和升级。
  • 便携式:可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:可以增加并自动分发容器副本。
  • 可堆叠:可以垂直和即时堆叠服务。

Docker与虚拟机的区别

       容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
       虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

特性Docker容器虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗50%左右
性能接近原生弱于原生
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离
封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离

容器在内核中支持2种重要技术:

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

namespace的六项隔离

namespace系统调用参数隔离内容
UTSCLONE_NEWUTS主机名与域名
IPCCLONE_NEWWIPC信号量、消息队列和共享内存
PIDCLONE_NEWPID进程编号
NETWORKCLONE_NEWNET网络设备、网络栈、端口等
MOUNTCLONE_NEWNS挂载点(文件系统)
USERCLONE_NEWUSER用户和用户组(3.8以后的内核才支持)

Docker核心概念

镜像

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

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

        Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

容器

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

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

        docker容器可以被看作运行在宿主机上的一个进程,容器共享宿主机的内核,容器间是通过namespace(命令空间、名称空间)隔离资源,,通过Cgroups(资源配额)去限制资源 

仓库

        Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

最大的公开库是docker  hub 

Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 

Docker Engine(引擎)

 Docker Engine是具有一下主要组件的C/S客户端——服务器应用程序

Server端:服务器是一种长期运行额程序,称为守护程序进程(dockerd命令)

Client端:REST API ,他指定程序可以用来与守护程序进行通信并指示其它操作的接口

命令行界面(CLI)客户端(Docker命令)

Docker运行的原理

  • docker基于客户端(容器)   服务器(docker引擎)结构的系统
  • docker的守护进程运行在宿主主机上,客户端(容器)通过socker向docker引擎发送相应的指令,docker服务器就会执行相应的命令
  • docker会以root权限运行他的守护进程,来处理普通linux用户无法完成的操作(如挂在文件系统等操作)

docker容器的生命周期

docker容器主要7个状态

  1. create:已创建,但还未运行的容器
  2. running:正在运行中的容器
  3. restarting:容器正在重启中
  4. removing:容器正在迁移中
  5. paused:已暂停状态的容器
  6. exited:停止状态的容器
  7. dead:死亡,主要是操作系统出现异常或者断电关机等有可能引发dead状态,不是很常见

暂停和停止状态区别

docker paused 命令挂起指定的容器中的所有进程

docker stop   容器内主进程会在指定时间内被杀死,默认为10秒后

三、安装Docker

目前Docker只支持64位操作系统


systemctl stop firewalld
systemctl disable firewalld
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镜像源

yum install -y docker-ce docker-ce-cli containerd.io
#安装docker-ce 并设置为开机自启
#docker-ce-cli、containerd.io 会作为依赖包被安装

systemctl start docker.service
systemctl enable docker.service 

        安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。


查看Docker版本信息

docker version
#查看docker版本信息
Client: Docker Engine - Community
 Version:           23.0.4     #yum安装会默认安装最新版
 API version:       1.42
 Go version:        go1.19.8
 Git commit:        f480fb1
 Built:             Fri Apr 14 10:36:38 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.4
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.8
  Git commit:       cbce331
  Built:            Fri Apr 14 10:34:14 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.20
  GitCommit:        2806fc1057397dbaeefbea0e4e17bddfbd388f38
 runc:
  Version:          1.1.5
  GitCommit:        v1.1.5-0-gf19387a
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

 查看docker信息

[root@localhost ~]# docker info
#docker信息查看
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.10.4
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.17.2
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0                  #容器数量
  Running: 0                    #正在运行的数量
  Paused: 0                     #暂停的数量
  Stopped: 0                    #已经停止的数量
 Images: 0                      #镜像数量
 Server Version: 23.0.4         #docker server版本
 Storage Driver: overlay2       #docker使用的是overlay2文件驱动
  Backing Filesystem: xfs       #宿主机上的底层文件系统
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs        #Cgroups 驱动
 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
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
 runc version: v1.1.5-0-gf19387a
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-693.el7.x86_64       #宿主机的相关信息
 Operating System: CentOS Linux 7 (Core)     #操作系统
 OSType: linux                               #操作系统类型
 Architecture: x86_64                        #系统架构
 CPUs: 2                                     #CPU数
 Total Memory: 1.781GiB                      #总空间
 Name: localhost.localdomain                 #主机名
 ID: 9c41d00d-ad9d-4274-89e3-1b391fe58c8f
 Docker Root Dir: /var/lib/docker            #docker数据存储目录
 Debug Mode: false
 Registry: https://index.docker.io/v1/       #registry地址
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:                           #加速站点
  https://8jp5yjkf.mirror.aliyuncs.com/
 Live Restore Enabled: false

Docker镜像管理

1、配置镜像加速器(阿里云)

进入网址,选择操作系统,里面有现成的配置

容器镜像服务 (aliyun.com)https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://8jp5yjkf.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2、查看镜像信息

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

       Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

3、查看下载的镜像文件信息

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

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

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   15 months ago   141MB

#repository:镜像属于的仓库
#TAG:镜像的标签信息,标记同一个仓库中的不同镜像
#TMAGE ID:镜像的唯一ID号,唯一标识一个镜像
#CREATED:镜像创建时间
#SIZE:镜像大小

5、搜索镜像

格式
docker search 关键字

6、获取镜像

格式
docker pull 仓库名称[:标签]

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

7、根据镜像的唯一标识ID号,获取镜像详细信息

格式
docker inspect 镜像ID号

8、为本地镜像添加新标签

格式
docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:laster nginx:web

9、删除镜像

格式
docker rmi 仓库名称:标签
#当一个镜像有多个标签时,只是删除其中指定的标签
或
docker rmi 镜像ID号
#会彻底删除该镜像

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

10、批量删除镜像

#docker images -q 可以加载镜像id
#批量删除所有镜像
docker rmi `docker images -q`
#批量删除nginx镜像
docker rmi `docker images|grep "nginx"`

11、存储镜像---将镜像保存成为本地文件

格式
docker save -o 存储文件名 存储的镜像
例:docker save -o nginx nginx:latest
#存储镜像命名为nginx存在当前目录下

12、导入镜像---将镜像文件导入到镜像库中

格式
docker load < 存储的文件
或
docker load -i 存储的文件
例:docker load < nginx

13、上传镜像

       默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest soscscs/nginx:web	#添加新的标签时必须在前面加上自己的dockerhub的username
docker login								#登录公共仓库
Username:soscscs
password:abc123456
docker push soscscs/nginx:web		    	#上传镜像

 

 

 

 

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

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

相关文章

组合设计模式解读

目录 问题引进 传统方案解决学校院系展示存在的问题分析 组合模式基本介绍 基本介绍 组合模式原理类图 对原理结构图的说明-即(组合模式的角色及职责) 应用实例 组合模式的注意事项和细节 问题引进 看一个学校院系展示需求 编写程序展示一个学校院系结构&#xff1a;需…

浏览器加 buff 指南-【超实用的浏览器工具】

今天这篇博客&#xff0c;说一说浏览器以及加 buff &#xff0c;先说浏览器&#xff1a;地址&#xff1a;https://www.xduoyu.com/&#xff0c;里面的工具让你的浏览器变装为技术人员的专属利器。这里还要表扬一下&#xff0c;官网的宣传页做的越来越专业了&#xff0c;还打造了…

好的台灯和差的台灯的区别?盘点高品质的护眼台灯品牌

简单来说&#xff0c;好的台灯使用20分钟不会眼疲劳&#xff0c;可差的台灯使用10分钟就眼干涩、不舒服了。 这些年的LED灯具都做得非常成熟&#xff0c;台灯也是LED灯具&#xff0c;在频闪、蓝光、显色指数、均匀度等各种指标都将眼睛保护的很好&#xff0c;采用特殊的光学技…

Thinkphp+vued大学生租房管理系统mysql校园房屋租赁网站系统

学生租房管理系统是计算机技术和网络迅速发展的一个大学生租房信息应用解决方案。大学生租房平台将Internet网络技术与现代管理观念相融合&#xff0c;针对信息技术的特点对大学生租房平台进行规划和重构&#xff0c;对大学生租房信息流进行优化及合理配置&#xff0c;生成动态…

VNC 远程重装 Centos 系统

一、环境 1、环境准备 两台设备&#xff0c;一台为重装 Centos 机器( IP&#xff1a;192.168.206.30&#xff0c;hostname&#xff1a;centos1) &#xff0c;确保 centos1本身开启了图形化界面GNOME&#xff0c;不是最小化安装的Linux 。一台为重装时&#xff0c;从获取安装程…

Django REST Framework(DRF)框架之视图集ViewSet与路由Router

DRF框架之视图集ViewSet 视图集ViewSet与路由Router视图集ViewSet路由Router视图集和路由的基本使用 视图集ViewSet的使用ViewSetGenericViewSetModelViewSetReadOnlyModelViewSet视图集添加其他方法视图集对象action属性 路由Router的使用SimpleRouterDefaultRouter基本使用自…

DELL R730 主板坏了,Raid5硬盘移到同型号服务器备忘

1、开机时按ctrlr进入raid设置页面 2、进入raid设置页面后可以看到没有找到虚拟磁盘&#xff0c;我们按F2打开操作菜单 3、选择菜单Foreign Config -> Import &#xff0c;选择Yes开始导入硬盘中的raid配置 4、导入成功的话就可以看到虚拟盘了 5、按Esc退出 6、按ctrlaltd…

为什么网络安全缺口很大,招聘却很少?

2020年我国网络空间安全人才数量缺口超过了140万&#xff0c;就业人数却只有10多万&#xff0c;缺口高达了93%。这里就有人会问了&#xff1a; 1、网络安全行业为什么这么缺人&#xff1f; 2、明明人才那么稀缺&#xff0c;为什么招聘时招安全的人员却没有那么多呢&#xff1…

迅为RK3568核心板车载中控AVM一体机应用

RK3568M车载中控&AVM一体机方案搭载4核A55 CPU&#xff0c;G52-2EE GPU架构&#xff0c;1Tops算力NPU&#xff0c;支持1路4K 60fps或8路1080P 30fps的多格式解码和高达1080P 100fps的H.265编码&#xff0c;具备双千兆GMAC、三路CAN以及USB3.0/SATA3.0/PCIE3.0等丰富接口&am…

Windows安装mysql详细步骤

目录 1 【确认本地是否安装mysql】 2【下载mysql安装包】 3【添加配置文件并安装mysql】 4【修改mysql密码】 5【配置环境变量】 windows 只安装mysql服务的操作 1 【确认本地是否安装mysql】 &#xff08;1&#xff09;按【winr】快捷键打开运行&#xff1b; &#xff…

java基于蚁群算法路由选择可视化动态模拟

蚁群算法是一种新生的算法&#xff0c;具有很强的通用性。从提出到现在&#xff0c;仅短短10余年的时间&#xff0c;但是在离散型组合优化问题中。表现很突出&#xff0c;所以一起人们的关注。目前蚁群算法的研究者主要集中在比利时、意大利、德国等国家&#xff0c;美国和日本…

Muduo 异步log的实现

1. logging 日志(logging) 有两个意思: 诊断日志: 即是我们日常debug 使用的文本文件记录trace。常用的log 有log4j, logback, log4cpp, ezlogger等常用的日志库。交易日志: 即是数据库的write-ahead log&#xff0c; 文件系统的journaling 等&#xff0c; 用于记录状态的变更…

软考 - IP地址与网络划分

一.IP组成 1.1 首个八位字节规则 1.2 地址掩码 IP地址掩码 标准地址掩码 A类&#xff1a;255.0.0.0 前1个字节是网络号 后3个字节是主机号 B类&#xff1a;255.255.0.0 前2个字节是网络号 后2个字节是主机号 C类&#xff1b;255.255.255.0 前3个字节是网络号 后1个字节是主机号…

nssctf web 入门(5)

这里通过nssctf的题单web安全入门来写&#xff0c;会按照题单详细解释每题。题单在NSSCTF中。 想入门ctfweb的可以看这个系列&#xff0c;之后会一直出这个题单的解析&#xff0c;题目一共有28题&#xff0c;打算写10篇。 目录 [鹤城杯 2021]EasyP [SWPUCTF 2021 新生赛]eas…

VR全景--720全景 助力行业数字化新模式

引言 720全景就是视角超过人的正常视角的图像&#xff0c;而我们这里说的全景特指水平360度&#xff0c;上下360度全能观看的&#xff0c;能看到“天、地”的全景。全景实际上只是一种对周围景象以某种几何关系进行映射生成的平面图片&#xff0c;只有通过全景播放器的矫正处理…

电力监控系统高扩展性的设计思路与方法

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 电力监控软件的可扩展性设计 2023-04-19 14:00AcreXHJ 安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要&#xff1a;本文根据安科瑞电力监控系统软件的设计过程&#xff0c;论述了电力监控系统高扩展…

JS 正则表达式(正则匹配RegExp)

JavaScript实现对象深拷贝的方法&#xff08;5种&#xff09; 知识回调&#xff08;不懂就看这儿&#xff01;&#xff09;场景复现核心干货举例引入关于RegExp对象语法修饰符——区分大小写和全局匹配方括号——查找某个范围内的字符元字符——拥有特殊含义的字符量词RegExp对…

4.Hadoop三件套(1)

如果说HDFS是存储,则Yarn就是cpu和内存,mapreduce就是程序。 1.HDFS文件块大小 HDFS中的文件在物理.上是分块存储(Block) ,block默认保存3份块的大小可以通过配置参数(dfs blocksize)来规定,默认大小在Hadoop2 .x版本中是128M,老版本中是64M。 解释:块的大小:10ms*100*…

代码随想录算法训练营第48天 | 动态规划 LeetCode198.打家劫舍,213.打家劫舍II,337.打家劫舍 III

代码随想录算法训练营第48天 | 动态规划 LeetCode198.打家劫舍&#xff0c;213.打家劫舍II&#xff0c;337.打家劫舍 III 198.打家劫舍 第一遍读题思考 dp[i]代表打劫到第i家的时候抢到的最多的钱数。 那么递推公式就跟dp[i-1] and dp[i-2]有关&#xff0c;如果抢i-1家的&am…

【梦回stm32】-寄存器篇-跑马灯代码研读-总结

前言&#xff1a;学就要学懂&#xff0c;别以为做出来就行&#xff0c;要弄懂通路&#xff0c;思路要清楚-谨记 1.先讲讲背景&#xff0c;此次需要研究的是stm32的跑马灯代码&#xff0c;下图是个本实验用的正点原子的代码目录 1&#xff09;HARDWARE-》LED 2&#xff09;SYS…