RedHat9 | podman容器
1、容器技术介绍
传统问题
- 应用程序和依赖需要一起安装在物理主机或虚拟机上的操作系统
- 应用程序版本比当前操作系统安装的版本更低或更新
- 两个应用程序可能需要某一软件的不同版本,彼此版本之间不兼容
解决方式
- 将应用程序打包并部署为容器
- 容器是与系统的其他部分隔离的一个或多个进程的集合
- 容器内容和其他容器内容是隔离的,不会相互影响
- 容器是打包应用程序以简化和管理的方式
2、容器和虚拟化的对比
虚拟化
- 可以在单一硬件设备上运行多个操作系统
- 通过虚拟化软件将硬件拆分成多个虚拟硬件,允许多个操作系统同时运行
- 需要完整的操作系统来支持应用允许
容器
- 容器可以在操作系统上直接运行,容器之间共享硬件和操作系统资源
- 容器中应用现对于虚拟化环境更轻量,运行速度更快速
- 容器共享操作系统的内核,将容器化的应用程序进程与系统的其余部分隔离开,可以使用与该内核兼容的任何软件
- 现对于虚拟化使用的硬件资源更少,可以快速启动和关闭,减少存储要求
- 可以保存容器的多个版本,根据需求快速访问特定版本
- 容器是临时的,可以将容器运行时产生的数据永久保存在持久存储中
3、Rootless和Rootful容器
在容器主机上,可以使用root用户或普通用户运行容器。其中由特权用户运行的容器称为Rootful容器,普通用户运行的容器称为Rootless容器。Rootless容器不允许使用给特权用户所保留的系统资源(访问受限目录、在受端口(1024以下)发布网络服务)。
容器管理工具与开放容器协议(OCI)兼容,意味着我们可以管理所有兼容OCI协议的Linux容器,如Docker
容器管理工具
- podman:直接管理容器和容器镜像
- skopep:检查、复制、删除和签名镜像
- buildah:创建新的容器镜像
4、容器镜像和注册表
运行容器必须使用容器镜像。容器镜像是包含编码步骤的静态文件,充当创建容器的蓝图。容器镜像会打包应用及其所有的依赖项,如系统库、编程语言运行时和库,以及其他配置设置。
镜像容器根据规范构建,遵循开放容器项目OCI镜像格式规范。这些规范定义容器镜像的格式,以及镜像支持的容器主机操作系统和硬件架构的元数据。
容器注册表是用于存储和检索容器镜像的存储库,通过将容器镜像推送或上传到容器注册表中,可以通过注册表中将这些容器镜像拉取或下载到本地系统,用于运行容器。有点类似于dnf。
可以使用第三方镜像的公共注册表,也可以使用私有注册表。需要注意容器镜像的来源,和dnf中的软件包一样,需要清楚容器镜像中的代码是否合规、安全。红帽通过两个主容器注册表来分发认证容器镜像,可以通过RedHat登录凭据来访问这个两个注册表。
红帽官方提供的注册表
- registry.redhat.io:适用于基于RedHat官方产品的容器
- registry.connect.redhat.com:适用于基础第三方产品的容器
- https://access.redhat.com/containers:基于Web的界面
5、红帽Quay镜像仓库
访问红帽中国官网
https://www.redhat.com/zh
在菜单栏中找到【产品】,随后单击【查看所有产品】
点击左侧【产品A-Z】,然后选择【Quay】
红帽Quay需要收费
在红帽提供的学员练习环境中,有一个utility虚拟机,内置Quay,提供了部分的容器镜像。
https://utility/
账号密码
账号 | 密码 |
---|---|
admin | redhat321 |
只提供了几个容器镜像
6、容器安装与登陆
安装podman容器(建议使用普通用户身份)
sudo dnf -y install container-tools
登陆podman
建议使用交互式登陆,避免遗留密码
# 登陆方式1:交互式
podman login registry.lab.example.com
> admin # 输入账号
> redhat321 # 输入密码# 登陆方式1:非交互式
podman login registry.lab.example.com -u admin -p redhat321
查看登陆
podman login --get-login
登出podman
podman logout registry.lab.example.com
搜索镜像仓库
podman serach registry.lab.example.com/ # 地址末尾需要加上/,代表访问仓库根目录
7、规模化容器管理
新应用越来越多的使用容器来实现功能组件,越来越多的容器难于管理。
在实际环境中部署容器需要一个强大的环境
- 平台必须确保必须服务容器的可靠性
- 通过增加或减少运行中的容器实例,对流量进行负载均衡,应对应用使用高峰
- 检测容器或主机的故障,并快速作出反应
Kubernetes(K8s,为什么叫K8s,是因为开头字母为K,结尾字母为s,中间8个字符)是一项编排服务,可以在容器集群中部署、管理和扩展基于容器的应用。通过负载均衡器将流量重定向到容器,以便扩展提供容器的数量。同时支持用户定义的健康性检查,以便监控容器,并在容器出现错误时将其自动重启。
RedHat提供了一个名为OpenShift的Kubernets发行版,是基于Kubernetes基础架构构建的一组模块化组件和服务。提供额外功能包括基于Web的远程管理、多租户、监控和审计、高级安全功能、应用生命周期管理和自助服务实例等。
8、部署容器
podman来自于container-tools元数据包的全功能容器引擎,用于管理开放容器计划(OCI)容器和镜像。podman的运行不使用守护进程,不需要使用root用户来启动或停止容器。
podman常用命令
参数 | 作用 |
---|---|
podman login | 登录 |
podman logout | 登出 |
podman search | 搜索镜像仓库内文件 |
podman login --get-login | 查看登录 |
–tls-verify | 不使用https验证 |
podman images | 查看当前系统中存在的镜像 |
podman ps | 查看系统中存在的容器 |
podman --version | 查看容器版本 |
podman build | 使用容器文件构建容器镜像 |
podman run | 在新容器中运行命令 |
podman images | 列出本地存储中的镜像 |
podman ps | 打印出有关容器的信息 |
podman inspect | 显示容器、镜像、卷、网络或容器基的配置 |
podman pull | 从注册表下载镜像 |
podman cp | 在容器和主机之间复制 |
podman exec | 在运行中的容器内执行命令 |
podman rm | 删除一个或多个容器 |
podman rmi | 删除1个或多个本地存储镜像 |
使用registries.conf文件中指定的注册表列表搜索匹配的名称镜像
podman search registry.lab.example.com/
拉取/下载指定镜像
podman pull registry.lab.example.com/ubi8/python-38
查看本地镜像
podman images
podman image ls
9、使用容器文件构建容器镜像
容器文件是一种文本文件,包含用于构建容器镜像的指令。容器文件通常具有定义其文件和目录所在路径的URL上下文。生成的容器镜像由只读层组成,每一层代表容器文件中的一条指令。
podman build构建容器镜像
podman build -t NAME:TAG DIR
- podman build:构建容器镜像
- -t NAME:指定生成镜像的名称
- TAG:新镜像的标签,默认值为latest
- DIR:工作目录路径
容器文件必须位于工作目录中,如果工作目录是当前目录,可以使用.
来指定。可以通过-f
指定与当前目录不同的目录。
Containerfile文件是构建镜像的命令参数脚本文件,构建容器镜像的步骤
- 编写一个Containerfile文件
- 使用podman build命令构建镜像
编写Containerfile文件,用于构建一个RedHat9并配置了YUM源,同时安装了Python3的镜像
vim Containerfile# 写入下列内容
FROM registry.lab.example.com/ubi9-beta/ubi:latest
RUN echo -e '[BaseOS]\nname=BaseOS\nbaseurl=http://content.example.com/rhel9.0/x86_64/dvd/BaseOS\nenable=1\ngpgcheck=0\n[AppStream]\nname=AppStream\nbaseurl=http://content.example.com/rhel9.0/x86_64/dvd/AppStream\nenable=1\ngpgcheck=0' > /etc/yum.repos.d/dvd.repo
RUN dnf install python3 -y
CMD ["/bin/bash","-c","sleep infinity"]
- FROM:代表所使用的镜像
- RUN:在构建镜像时执行的命令,该命令会依次执行(这里是创建一个YUM仓库文件)
- CMD:构建完镜像后指定的命令,注意CMD指令的语法是使用JSON数组格式(如果使用数组,则值需要使用双引号)
- sleep infinity:让容器在启动后保持运行状态
简单查看一下RUN命令的执行效果
echo -e '[BaseOS]\nname=BaseOS\nbaseurl=http://content.example.com/rhel9.0/x86_64/dvd/BaseOS\nenable=1\ngpgcheck=0\n[AppStream]\nname=AppStream\nbaseurl=http://content.example.com/rhel9.0/x86_64/dvd/AppStream\nenable=1\ngpgcheck=0'
需要先确保已经登陆podman
podman login --get-login
开始构建容器
podman build -t python3:1.0 .
- podman build:构建容器镜像
- -t python3:1.0:-t指定容器镜像的名称(镜像名称不允许大写),1.0为镜像标签(这里用1.0代表版本号)
- .:指定Containerfile文件的路径,
.
代表在当前路径下
验证本地镜像存储库,可以看到我们刚刚创建的镜像
podman images
查看镜像的相关信息
podman inspect localhost/python3:1.0 # 用于搜寻本地镜像的信息
skopeo inspect docker://xxxx # 在网上搜寻镜像信息
移除本地镜像
podman rmi registry.lab.example.com/ubi8/python-38
10、创建、运行、删除容器
容器的状态
状态 | 说明 |
---|---|
Created | 已创建好但未启动的容器 |
Runing | 与其进程一起运行的容器 |
Stop | 其进程停止的容器 |
Paused | 其进程已停止的容器,不支持Rootless容器 |
Deleted | 其进程已被杀死的容器 |
列出系统上正在运行的容器
podman ps # 查看当前正在运行的容器
podman ps -a # 查看计算机上的所有容器(已创建、停止、状态或在运行的)
创建容器
podman create --name python3-1 localhost/python3:1.0
- podman create:创建容器
- –name python3-1:指定容器的名称(容器名称需保持唯一)
- localhost/python3:1.0:创建容器所使用的容器镜像
- d4b569c51c440cd091cff994c649734ef6651e22212413e5bed0d900505150c2:返回容器的长ID值
podman create --name python3-2 7c85859a8381 # 可以使用容器镜像的IMAGE ID
运行容器
podman start python3-1 # 可以使用名称(可以自动补全)
podman start d4b569c51c44 # 也可以使用CONTAINER ID
删除容器
podman rm -f d4b569c51c44 # 删除指定容器
podman rm -rf python3-1 # 删除指定容器
podman rm -f -a # 删除所有容器
创建容器并在后台运行容器
podman run -d --name python3-1 localhost/python3:1.0 sleep infinity
podman run -di --name python3-1 localhost/python3:1.0 # 等同于上面
- podman run:创建容器并运行容器
- -d:在后台运行容器,容器的输出不会直接显示在终端上
- –name python3-1:指定容器的名称
- localhost/python3:1.0:使用的容器镜像
- sleep infinity:容器启动后执行的命令:保持容器运行
11、创建容器并与容器进行交互
创建一个RedHat7容器,并在终端与容器交互,在退出交互窗口后,容器状态会更改为退出
podman search registry.lab.example.com/ # 搜寻镜像
podman pull registry.lab.example.com/ubi7/ubi # 拉取镜像
podman images # 查看本地存储库中的镜像
podman run -ti --name redhat7 registry.lab.example.com/ubi7/ubi:latest # 保持容器的运行状态,并在终端交互
- podman run:创建容器并运行容器
- -t:分配一个伪终端,用于与容器交互
- -i:等同于sleep infinity,让容器保持运行
- –name python3-2:指定容器的名称
- localhost/python3:1.0:使用的容器镜像
新开一个终端然后查看运行状态
ssh student@servera
podman ps
退出与容器的交互
exit
然后继续查看容器的状态,可以看到容器状态变为退出
podman ps
12、创建容器并让容器持续运行
继续使用刚刚拉取的redhat7镜像创建容器
podman run -di --name redhat7-2 registry.lab.example.com/ubi7/ubi:latest
- -d:在后台运行
- -i:持续运行
查看容器的状态
podman ps -a
与容器进行交互,其实就是让容器执行/bin/bash命令,而/bin/bash会启动一个新的Bash shell会话
podman exec -ti redhat7-2 /bin/bash
退出会话,然后查看容器的状态
exit
podman ps -a
封装要在容器中执行的命令,可以避免特殊字符被转义
podman exec redhat7-2 sh -c 'echo HELLO > hello.txt;cat hello.txt'
- sh -c ‘xxx’:封装要在容器中执行的命令
13、容器中的环境隔离
容器隔离应用环境,每一个容器都有自己的文件系统、网络和进程。
在运行状态的容器中执行命令,可以看到我们容器的版本是Redhat7,而运行容器的系统版本是Redhat9,由此可以看出容器会隔离应用环境。
podman exec redhat7-2 cat /etc/redhat-release
14、容器中的文件系统隔离
首先在主机上创建一个脚本文件
echo "echo Hello!" > demo.sh
将脚本文件复制到容器中
podman cp demo.sh redhat7-2:/
运行容器中的脚本
podman exec redhat7-2 sh -c "chmod o+x demo.sh;./demo.sh"
15、删除容器和镜像
在删除容器镜像之前,必须先从该镜像移除任何现有运行的中的容器。
查看当前存在的容器
podman ps -a
当前存在容器,尝试删除镜像
podman rmi localhost/python3:1.0
先删除容器
podman rm -f python3-1
podman rm -f python3-2
再删除镜像
podman rmi localhost/python3
相关文章:
RedHat9 | podman容器
1、容器技术介绍 传统问题 应用程序和依赖需要一起安装在物理主机或虚拟机上的操作系统应用程序版本比当前操作系统安装的版本更低或更新两个应用程序可能需要某一软件的不同版本,彼此版本之间不兼容 解决方式 将应用程序打包并部署为容器容器是与系统的其他部分…...
边缘计算项目有哪些
边缘计算项目在多个领域得到了广泛的应用,以下是一些典型的边缘计算项目案例: 1. **智能交通系统**:通过在交通信号灯、监控摄像头等设备上部署边缘计算,可以实时分析交通流量,优化交通信号控制,减少拥堵&…...
计算fibonacci数列每一项时所需的递归调用次数
斐波那契数列是一个经典的数列,其中每一项是前两项的和,定义为: [ F(n) F(n-1) F(n-2) ] 其中,( F(0) 0 ) 和 ( F(1) 1 )。 对于计算斐波那契数列的第 ( n ) 项,如果使用简单的递归方法,其时间复杂度是…...
【教学类65-05】20240627秘密花园涂色书(中四班练习)
【教学类65-03】20240622秘密花园涂色书03(通义万相)(A4横版1张,一大 68张纸136份)-CSDN博客 背景需求: 打印以下几款秘密花园样式(每款10份)给中四班孩子玩一下,看看效果 【教学类…...
Python 学习之基础语法(一)
Python的语法基础主要包括以下几个方面,下面将逐一进行分点表示和归纳: 一、基本语法 1. 注释 a. 单行注释:使用#开头,例如# 这是一个单行注释。 b. 多行注释:使用三引号(可以是三个单引号或三个双引号&…...
日志分析-windows系统日志分析
日志分析-windows系统日志分析 使用事件查看器分析Windows系统日志 cmd命令 eventvwr 筛选 清除日志、注销并重新登陆,查看日志情况 Windows7和Windowserver2008R2的主机日志保存在C:\Windows\System32\winevt\Logs文件夹下,Security.evtx即为W…...
【ARM】MDK工程切换高版本的编译器后出现error A1137E报错
【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决工程从Compiler 5切换到Compiler 6进行编译时出现一些非语法问题上的报错。 2、 问题场景 对于一些使用Compiler 5进行编译的工程,要切换到Compiler 6进行编译的时候,原本无任何报错警告…...
深入 SSH:解锁本地转发、远程转发和动态转发的潜力
文章目录 前言一、解锁内部服务:SSH 本地转发1.1 什么是 SSH 本地转发1.2 本地转发应用场景 二、打开外部访问大门:SSH 远程转发2.1 什么是 SSH 远程转发2.2 远程转发应用场景 三、动态转发:SSH 让你拥有自己的 VPN3.1 什么是 SSH 动态转发3.…...
python如何把一个函数的返回值,当成这个函数的参数值
python如何把一个函数的返回值,当成这个函数的参数值 1. 递归调用 递归是一种函数自己调用自己的方法。在递归调用中,你可以将前一次调用的返回值作为下一次调用的参数。 def recursive_function(x):# 函数逻辑if 条件满足:return 结果else:return rec…...
【融合ChatGPT等AI模型】Python-GEE遥感云大数据分析、管理与可视化及多领域案例应用
随着航空、航天、近地空间遥感平台的持续发展,遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升,呈现出大数据特征。这为相关研究带来了新机遇,但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域…...
SpringBoot: Eureka入门
1. IP列表 公司发展到一定的规模之后,应用拆分是无可避免的。假设我们有2个服务(服务A、服务B),如果服务A要调用服务B,我们能怎么做呢?最简单的方法是让服务A配置服务B的所有节点的IP,在服务A内部做负载均衡调用服务B…...
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
简介 TypeScript 是 JavaScript 的超集,是 JavaScript(弱类型语言) 的强类型版本。 拥有类型机制文件后缀 .tsTypescript type ES6TypeScript 和 JavaScript 的关系类似 less 和 css 的关系TypeScript对 JavaScript 添加了一些扩展&#x…...
智慧校园-实训管理系统总体概述
智慧校园实训管理系统,专为满足高等教育与职业教育的特定需求而设计,它代表了实训课程管理领域的一次数字化飞跃。此系统旨在通过革新实训的组织结构、执行流程及评估标准,来增强学生的实践操作技能和教师的授课效率,为社会输送具…...
如何用GPT开发一个基于 GPT 的应用?
原文发自博客:GPT应用开发小记 如何开发一个基于 GPT 的应用?答案就在问题里,那就是用 GPT 来开发基于 GPT 的应用。本文以笔者的一个开源项目 myGPTReader 为例,分享我是如何基于 GPT 去开发这个系统的,这个系统的功能…...
大数据生态体系中各组件的区别面试题(更新)
一、MapReduce与Spark有什么区别? 1、处理方式: MapReduce基于磁盘处理数据,将中间结果保存到磁盘中,减少了内存占用,计算速度慢。 基于内存处理数据,将计算的中间结果保存到内存中,计算速度快。2、资源申请方式&…...
数字信号处理实验一(离散信号及离散系统的MATLAB编程实现)
实验要求: 离散信号及离散系统的MATLAB编程实现(2学时) 要求: 编写一程序,输出一定长度(点数),具有一定幅度、(角)频率和初始相位的实(或复&…...
数字图像处理专栏——introduction
Introduction: 数字图像处理技术是我在深入学习研究的方向之一。本科期间跟随导师做基于AndroidOpenCV的病虫识别app,因此入门,我也对该部分知识有进一步探索的欲望,但更多的是因该脚踏实地一步步记录,一步步成长。 本篇从数字图…...
Django 模版继承
1,设计母版页 Test/templates/6/base.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><!-- 修正了模板标签的全角字符问题 -->{% block title %}<title>这个是母版页</title>{…...
Apipost接口测试工具的原理及应用详解(一)
本系列文章简介: 随着软件行业的快速发展,API(应用程序编程接口)作为不同软件组件之间通信的桥梁,其重要性日益凸显。API的质量直接关系到软件系统的稳定性、性能和用户体验。因此,对API进行严格的测试成为…...
一款轻量级的通信协议---MQTT (内含Linux环境搭建)
目录 MQTT MQTT的关键特点: 应用场景 Linux环境搭建: 1. 安装mosquitto 2. Linux下客户端进行通信 3. PC端和Linux下进行通信 安装MQTT. fx 4. MQTT.fx的使用 1. 点击连接 编辑 2. 连接成功 3. 订阅主题或者给别的主题发送消息 遇到的问…...
记netty本地客户端断线无法自动重连 or 远程客户端自动重连本地服务端
记netty客户端断线无法自动完成重连 or 服务端无法让客户端断线重连 引场景案例bootstrap 引 netty既能开发socket服务端,也可开发客户端,实现连接的全双工通信。在客户端断线重启后,可自动重连服务端。 场景 本地代码既有socket客户端也有…...
UNIAPP_在js文件中使用i18n国际化
导入 import { initVueI18n } from dcloudio/uni-i18n import messages from /locale/index const { t } initVueI18n(messages) 使用 t(config.request.i001)....
第三节:如何理解Spring的两个特性IOC和AOP(自学Spring boot 3.x第一天)
大家好,我是网创有方,接下来教大家如何理解Spring的两个特性IOC和AOP。本节有点难,大家多理解。 IOC(控制反转) 定义与核心思想: IOC,全称Inversion of Control,即控制反转。 其核…...
【51单片机】串口通信(发送与接收)
文章目录 前言串口通信简介串口通信的原理串口通信的作用串口编程的一些概念仿真图如何使用串口初始化串口串口模式波特率配置 发送与接收发送接收 示例代码 总结 前言 在嵌入式系统的开发中,串口通信是一种常见且重要的通信方式。它以其简单、稳定的特性在各种应用…...
【AI研发工具包】sklearn教程(Scikit-learn)
目录 1. 引言 2. 安装sklearn 3. 导入sklearn 4. 加载数据集 5. 数据预处理 6. 训练模型 7. 评估模型 8. 保存和加载模型 9. 自定义数据 10. 深入sklearn 11. 注意事项 1. 引言 Scikit-learn(简称sklearn)是Python中一个非常流行的机器学习库…...
数位DP——AcWing 1081. 度的数量
数位DP 定义 数位DP是一种动态规划技巧,特别适用于处理与数字的位操作相关的问题,如数字序列的计数、数字的生成等问题。它通过将问题分解为对每一位数字的独立考虑,从而简化问题复杂度,实现高效求解。 数位DP的核心思想是将原…...
2024下半年必追国漫片单,谁将问鼎巅峰?
随着2024年上半年的落幕,国漫市场再度迎来了百花齐放的盛况。从经典续作到全新IP,从玄幻到科幻,每一部作品都以其独特的魅力吸引着观众的目光。本期为大家盘点下半年值得一看的国漫佳作,大胆预测,谁将成为这场神仙打架…...
信息发布小程序h5 uniapp thinkphp
纯手工uniapp thinkphp 全开源打造 信息发布小程序 一、概述 信息发布小程序是一种基于微信平台的小程序应用,旨在为用户提供便捷的信息发布与展示服务。用户可以通过该小程序快速发布各类信息,如招聘、寻物、公告等,同时也可以浏览和搜索…...
Windows定时任务执行脚本
场景:由于网络波动原因导致云数据库没连接上,从而导致某个流程引擎链接不上数据库从而导致该流程引擎服务挂了,网络恢复后 数据库链接正常,但是该引擎服务还是中止状态。 解决方案:在Windows中新建一个定时任务&#…...
优维“统一开放平台”:开放、开发、集成、客制化
基于丰富完善的产品体系,优维重磅推出了统一开放平台。这款由优维自主设计与研发,集数据开发、能力开放、能力集成、客制化为一体的统一开放平台,具备应用市场、应用开发、连接能力、采控平台、API集市、开发者工具等功能模块,可为…...
卧龙区2015网站建设口碑/指数型基金怎么买
年老时最后悔的几件事 年轻时努力不够导致一事无成对子女教育不当没有好好珍惜自己的伴侣没有善待自己的身体年轻时怎么做 热爱你的工作,它会让你更值钱不要总认为自己比别人做得好无论走到哪里,都该喜欢那一段时光与其担心未来,不如现在努力…...
wordpress页面表格/企业老板培训课程
剖析tcp与udp及应用场景协议方案选择 什么是TCP和UDP TCP和UDP是TCP/IP协议中的两个传输层协议,它们使用IP路由功能把数据包发送到目的地,从而为应用程序及应用层协议(包 括:HTTP、SMTP、SNMP、FTP和Telnet)提供网…...
做外贸公司网站怎么做/微信视频号小店
问题描述: 让导航栏重叠在轮播图上面,并且导航栏要是透明的状态,功能实现了,但是出现拖到分屏宽度就变了。 代码: 开始用的宽度设置都是px单位,后来改成百分比就可以自适应了。 原因分析:…...
wordpress 分类目录函数/宁波seo排名优化价格
目录 1. 配置mysql环境变量 2.修改my.ini文件 1) 设置base和data目录 3.安装mysql服务 4. 初始化数据库 5. 启动mysql服务,访问mysql数据库 6. 如果忘记密码了怎么办? 1) 修改my.ini文件 2)在powershell里重启mysql服务 3࿰…...
营销型网站建设公司哪家好/seo课程多少钱
由于类型转换过程中有可能出现原始参数无法转换为目标类型的错误,所以struts2提供了类型转换中的异常处理机制。 在struts2的默认配置文件struts-default.xml中有如下一段配置代码 <interceptors><interceptor-stack name"defaultStack"><…...
网站开发及维护是什么/网络推广公司排名
作者:张娜 爱可生南区DBA组成员,负责MySQL、TiDB日常维护、故障处理。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、前言 MySQL 8.0.29之前,在线…...