【Docker】Linux中Docker镜像结构及自定义镜像,并且上传仓库可提供使用

目录

一、镜像结构

1. 基本结构

2. 常用命令

二、自定义镜像

1. 基本镜像

2. 进阶镜像

3. 完善镜像

三、镜像上传仓库

每篇一获


一、镜像结构

自定义 Docker 镜像有很多用途,以下是一些主要的应用场景:

  1. 一致性环境:通过自定义镜像,您可以确保您的应用在不同的环境中(开发、测试、生产等)运行在完全一致的环境中。这可以避免"在我机器上可以运行"的问题。

  2. 快速部署:自定义镜像包含了运行应用所需的所有依赖,这使得部署过程变得非常快速和简单。只需运行一个命令,就可以在任何安装了 Docker 的机器上启动应用。

  3. 版本控制和回滚:每个 Docker 镜像都有一个唯一的标签,这使得版本控制变得非常简单。如果新版本的应用有问题,您可以很容易地回滚到旧版本的镜像。

  4. 微服务架构:在微服务架构中,每个服务都可以有自己的 Docker 镜像。这使得每个服务可以独立地更新和扩展,而不会影响其他服务。

  5. 持续集成/持续部署(CI/CD):在 CI/CD 管道中,自定义镜像可以用于构建、测试和部署应用。这使得整个开发过程更加自动化,提高了开发效率。

1. 基本结构

Dockerfile 是一个文本文件,它包含了一组用户可以调用来创建镜像的指令。以下是 Dockerfile 的基本结构:

  1. FROM:指定基础镜像,所有操作都基于这个基础镜像。例如:FROM ubuntu:18.04

  2. LABEL:为镜像添加元数据及声明镜像的作者或者维护者的信息。

  3. RUN:在镜像中运行命令,这些命令会在新的层上创建新的镜像。例如:RUN apt-get update

  4. CMD:提供容器默认的可执行程序,可以包含可执行程序,也可以省略,如果省略,则必须在运行时通过命令行指定。例如:CMD ["executable","param1","param2"]

  5. EXPOSE:声明运行时容器提供服务的网络端口。例如:EXPOSE 8080

  6. ENV:设置环境变量。例如:ENV myName="John Doe" myDog=Rex\ The\ Dog

  7. ADD 和 COPY:将文件从 Docker 主机复制到 Docker 镜像中。ADD 有自动解压缩功能,COPY 则更为直接明了。

  8. ENTRYPOINT:配置容器启动后执行的命令,并且不会被 docker run 提供的参数覆盖。

  9. VOLUME:创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保存的数据等。

  10. WORKDIR:设置工作目录,所有后续的操作(CMD、ENTRYPOINT、COPY 和 ADD)都会在这个目录下进行。

  11. USER:设置运行容器时的用户名或 UID。

  12. ONBUILD:当构建一个被继承的 Dockerfile 时运行命令,该指令添加到镜像中,稍后触发。

  13. MAINTAINER :用于声明镜像的作者或者维护者的信息,它可以为使用者提供一种联系镜像创建者的方式。

需要注意的是,MAINTAINER 从 Docker 1.13.0 开始,这个指令已经被标记为已废弃,推荐使用 LABEL 指令来替代。

例:

MAINTAINER John Doe <john.doe@example.com>

 如:

LABEL maintainer="John Doe <john.doe@example.com>"

LABEL 指令可以用于添加更多的元数据到镜像中,比如版本号、构建日期等等。

这些指令在 Dockerfile 中按照从上到下的顺序执行。每个指令都会在镜像上创建一个新的层,然后提交。

案例:

# 基于官方的 JDK 镜像
FROM openjdk:8-jdk
# 设置环境变量
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
# 安装 MySQL
RUN apt-get update && apt-get install -y mysql-server
# 安装 Tomcat
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME
RUN curl -O https://downloads.apache.org/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz \
&& tar -xvf apache-tomcat-8.5.61.tar.gz \
&& rm apache-tomcat-8.5.61.tar.gz
# 暴露端口
EXPOSE 8080
# 启动 Tomcat
CMD ["catalina.sh", "run"]

这个 Dockerfile 会创建一个包含 JDK、MySQL 和 Tomcat 的 Docker 镜像。在构建镜像时,它会先从 Docker Hub 下载官方的 JDK 镜像作为基础镜像,然后安装 MySQL,接着下载并安装 Tomcat,最后设置启动命令为启动 Tomcat。

请注意,这只是一个基础示例,实际使用时可能需要根据具体需求进行修改和优化。例如,可能需要添加更多的环境变量,或者调整安装命令以适应特定的应用需求。

2. 常用命令

以下是您提到的 Dockerfile 指令的详细解释:

  1. RUN:用于执行后面跟着的命令行命令。有两种格式:RUN <command>(shell 格式)和 RUN ["executable", "param1", "param2"](exec 格式)。

  2. ENV:用于设置环境变量。这些变量以 <key>=<value> 的形式存在,可以在容器中被脚本或程序调用。

  3. COPY:将来自 Dockerfile 所在目录的文件或目录复制到容器中的一个新位置。

  4. ADD:与 COPY 类似,但是 ADD 允许后面的源参数是一个 URL,或者在源文件是一个 tar 文件的情况下,可以自动解压缩这个 tar 文件。

  5. EXPOSE:用于声明容器运行时监听的网络端口。

  6. WORKDIR:用于设置 RUN、CMD、ENTRYPOINT、COPY 和 ADD 指令的工作目录。

  7. ONBUILD:当镜像被用作其他 Dockerfile 的基础镜像时,ONBUILD 指令将会被触发执行。

  8. USER:用于设置接下来的 RUN、CMD 和 ENTRYPOINT 指令运行时的 UID。

  9. VOLUME:用于在容器中创建一个挂载点,用于连接 Docker 主机和容器的文件系统。

容器启动时自动执行指令:

CMD 和 ENTRYPOINT 都是 Dockerfile 中用于指定容器启动时运行的命令的指令,但它们的用法和目的有所不同。

  1. CMD:CMD 指令用于提供容器运行时的默认命令及其参数。在启动容器时,我们可以覆盖这些默认的参数。CMD 在 Dockerfile 中只应被定义一次,如果定义了多次,只有最后一次的定义会生效。CMD 有两种格式:

    如果 Dockerfile 中同时存在 CMD 和 ENTRYPOINT,CMD 中的参数会被添加到 ENTRYPOINT 中,作为其参数。

    • CMD ["executable","param1","param2"](exec 格式,推荐)
    • CMD command param1 param2(shell 格式)
  2. ENTRYPOINT:ENTRYPOINT 的目的也是让容器以应用程序或服务的形式运行。与 CMD 不同,我们在启动容器时不能覆盖 ENTRYPOINT 指令提供的命令,但可以添加额外的参数。ENTRYPOINT 有两种格式:

    如果我们既想让容器以应用程序或服务的形式运行,又想让这些应用或服务接受参数,那么最好的做法是使用 ENTRYPOINT 和 CMD 一起使用,让 ENTRYPOINT 指定应用程序,而让 CMD 指定默认参数。

    • ENTRYPOINT ["executable", "param1", "param2"](exec 格式,推荐)
    • ENTRYPOINT command param1 param2(shell 格式)

二、自定义镜像

1. 基本镜像

首先进入虚拟机并且用MobaXterm这个工具连接,进入后先查看docker的服务/进程有没有开:

输入命令:systemctl status docker   (查看docker的服务/进程

以下是没有开启状态:

 以下是开启状态:

创建一个文件夹,来存放创建后的镜像,并且创建并编写 Dockerfile 文件。

创建文件夹:mkdir soft      (名称soft,可以自己修改)

进入文件夹:cd soft/

创建并编辑Dockerfile文件vim Dockerfile    (文件名称不用改)

进入文件后,按 i 进入编辑模式,然后将以下粘贴上,在按Esc退出编辑模式,输入 :wq 

保存编写内容并且退出文件。 

Dockerfile文件中编写:
 

#1.指定基础镜像,并且必须是第一条指令
FROM  centos
#2.指明该镜像的作者和其电子邮件
MAINTAINER  CloudJun  "jun737x@163.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR  /test
#4.将文件从Docker主机复制到Docker镜像中
COPY spring.jar /test

创建编写完成后,通过 docker build 命令来创建镜像。

命令:docker build -t spring:v1 .

创建语句 docker build -t ,创建后这个镜像的名称spring,这个镜像的版本为 v1 ( 版本可以自己定义,如:0.1,1.0,v1,v2都可以),其中的  . 表示在当前目录创建

再查看镜像:docker images

进入:docker run -it spring:v1 (spring为镜像名称,后面的:v1是需要进入镜像的哪个版本)

之后看看当前目录是不是自己在Dockerfile文件中所设置的,及带进来的jar包是否存在

查看当前路径:pwd 

查看文件:ls

2. 进阶镜像

以上的镜像是不可以jar包中的项目运行的,因为镜像中没有jdk配置。

首先,需将本地的属于Linux的jdk和jre的压缩包拖到创建的文件夹中

如图:

 

以下我们来进行完善以上的缺陷: 

以下配置jdk,可以运行jar包项目

输入命令,编辑Dockerfile文件vim Dockerfile   ,将原来的编写全部删除。

删除:进入后先将输入键到第一行,再输入数字(输入的数字是看不到的如:12),再按两下 d ,就会删除12行已编写的内容,当然输入13或者14就删除13或者14行,可以根据自己想删除多少行来进行输入

将以下编写的内容粘贴到Dockerfile文件中,按Esc退出编辑模式,输入 :wq 保存编写内容并且退出文件。 

#1.指定基础镜像,并且必须是第一条指令
FROM  centos
#2.指明该镜像的作者和其电子邮件
MAINTAINER  CloudJun  "jun737x@163.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR  /test
#4.将文件从Docker主机将jdk及jar包复制到Docker镜像中,自动将jdk的压缩包进行解压
COPY  spring.jar /test
ADD  jdk-8u221-linux-x64.tar.gz  /test
#5.将jdk解压后配置环境变量
ENV JAVA_HOME=/test/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#6.容器启动时,需要执行的命令(执行jar包)
CMD java -jar spring.jar

如图(粘贴进去后全部注释了,可以手动删除前面的#解除注释): 

创建镜像:docker build -t spring:v2 . 

再查看镜像:docker images

进入容器:docker run -it spring:v2      (这里会自动启动jar包)

已可以通过:docker run -itd spring:v2   (在后台运行)

再进入:docker exec -it 24696887b11eeb7ea229221e94f7b0cac03526551854319db80aef21b2d12ca4 bash

( 其中bash前面是运行后的编号,根据运行后的编号进入到该容器中)

查看jar及解压后的jdk,还可以输入命令查看jdk环境:echo $JAVA_HOME

以下配置jre,可以运行jar包项目及优化储存

输入命令,编辑Dockerfile文件vim Dockerfile   ,将原来的编写全部删除。

将以下编写的内容粘贴到Dockerfile文件中,按Esc退出编辑模式,输入 :wq 保存编写内容并且退出文件。 

#1.指定基础镜像,并且必须是第一条指令
FROM  centos
#2.指明该镜像的作者和其电子邮件
MAINTAINER  CloudJun  "jun737x@163.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR  /test
#4.将文件从Docker主机jre包复制到Docker镜像中,自动将jdk的压缩包进行解压
COPY  spring.jar /test
ADD  jre-8u391-linux-x64.tar.gz  /test
#5.将jre解压后配置环境变量
ENV JAVA_HOME=/test/jre1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#6.容器启动时,需要执行的命令(执行jar包)
CMD java -jar spring.jar

 

创建镜像:docker build -t spring:v3 .

再查看镜像:docker images

运行:docker run -itd spring:v3

虽然储存的减少可能很小,但是当需要量上来是时候也是节省了大量的储存空间的。

3. 完善镜像

需要将储存控制到很少可以使用这个镜像jeanblanchard/alpine-glibc,这个镜像所需的储存很少,而通过这个镜像自定义出来的镜像也会少很多。

首先需要下载这个镜像:docker pull jeanblanchard/alpine-glibc

再查看镜像的信息:docker images

可以看到所需的储存空间很少。

然后我们将指定的镜像修改为这个镜像将Dockerfile文件,再次镜像编辑为以下内容。

#1.指定基础镜像,并且必须是第一条指令
FROM  jeanblanchard/alpine-glibc
#2.指明该镜像的作者和其电子邮件
MAINTAINER  CloudJun  "jun737x@163.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR  /test
#4.将文件从Docker主机jre包复制到Docker镜像中,自动将jdk的压缩包进行解压
COPY  spring.jar /test
ADD  jre-8u391-linux-x64.tar.gz  /test
#5.将jre解压后配置环境变量
ENV JAVA_HOME=/test/jre1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#6.容器启动时,需要执行的命令(执行jar包)
CMD java -jar spring.jar

创建镜像:docker build -t spring:v4 .

再查看镜像:docker images

现在这样的需要的储存空间就相对少了一半,更加的节省了资源空间。

现在映射端口运行:docker run -itd --name s1 -p 8080:8080 spring:v4

之后在主机浏览器中访问虚拟机IP的访问路径:

三、镜像上传仓库

首先需要在我们的阿里云账号中开启镜像仓库,点击用户左边的控制器,点击容器镜像服务ACR,点击实例列表,在其中点击创建个人版本的,企业版要米,创建后需要设置密码。

之后将以上的登入凭证复制粘贴到虚拟机中执行命令,前面的$不用复制进去,之后会镜像密码的输入,是自己设置的容器镜像服务密码,以下说明登入成功:

创建仓库:在实例列表中点击命名空间——>之后创建命名空间即可

如图:

之后创建一个仓库,仓库名称可以自己取

有其中的之后也可以绑定到账号中去,这里没有就可以选择本地仓库 

之后将需要上传推送到仓库的镜像取个别名,在将这个镜像绑定为阿里云的仓库,阿里云仓库在镜像仓库的第三部的将镜像推送到Registry中有命令。

第一个命令为登入,第二个命令为绑定阿里云仓库,第三个命令为上传推送到仓库

现在我们将虚拟机中共的镜像删除,删除后可以在次重阿里仓库中拉取下来。

删除:docker rmi 镜像名:v1   (v1版本号)

拉取下载命令:docker pull 仓库中的创建名称:v1    

每篇一获

学习并掌握在 Linux 中使用 Dockerfile 自定义镜像以及上传到阿里云仓库的技术,对您的技术能力和职业发展都有着重要的意义。

  1. 提升技术能力:Docker 是一种流行的容器化技术,它可以帮助您将应用及其依赖打包在一起,实现快速、一致的部署。通过学习和使用 Docker,您可以更深入地理解容器化技术,提升您的技术能力。同时,使用 Dockerfile 自定义镜像,可以让您更好地理解 Docker 镜像的构建过程,进一步提升您的 Docker 技术能力。

  2. 提高工作效率:使用 Dockerfile 自定义镜像,可以帮助您快速、一致地构建和部署应用。您只需要编写一次 Dockerfile,就可以在任何支持 Docker 的平台上重复使用,大大提高了您的工作效率。此外,通过将镜像上传到阿里云仓库,您可以方便地在不同的环境中共享和使用这些镜像,进一步提高您的工作效率。

  3. 扩大职业发展机会:掌握 Docker 和阿里云仓库的使用,可以扩大您的职业发展机会。Docker 和阿里云都是目前 IT 行业中非常热门的技术,掌握这些技术可以让您在求职市场上具有更大的竞争优势。

  4. 提升团队协作能力:通过使用阿里云仓库共享 Docker 镜像,您的团队可以更方便地共享和协作开发工作,提升团队的协作能力。

  5. 提高应用的可移植性:使用 Docker 可以提高应用的可移植性,使应用可以在不同的环境中一致地运行,降低了应用部署的复杂性。

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

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

相关文章

Gauss消去法(C++)

文章目录 算法描述顺序Gauss消去法列选主元Gauss消去法全选主元Gauss消去法Gauss-Jordan消去法 算法实现顺序Gauss消去法列选主元Gauss消去法全选主元Gauss消去法列选主元Gauss-Jordan消去法 实例分析 Gauss消去法是求解线性方程组较为有效的方法, 它主要包括两个操作, 即消元和…

正则表达式Regex

是什么&#xff1a;一句话&#xff0c;正则表达式是对字符串执行模式匹配的技术。 从一段字符串中提取出所有英文单词、数字、字母和数字。 如果采用传统方法&#xff1a;将字符串的所有字符分割成单个&#xff0c;根据ASCII码判断&#xff0c;在一定范围内就是字母&#xff…

pymssql 报错误解决办法:20002, severity 9

错误 解决办法 python3.6&#xff0c;安装pymssql低版本&#xff08;pymssql-2.1.5-cp36-cp36m-win32.whl&#xff09;

【教3妹学编程-算法题】构造限制重复的字符串

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开森。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;最近一周都是大晴天&#xff0c;艳阳高照 2哥&#xff1a;是啊&am…

相比其他关系型数据库,亚信安慧AntDB JDBC驱动特性有哪些不同之处

关键字&#xff1a;JDBC&#xff0c;双引擎语法&#xff0c;安全加强&#xff0c;批量更新 使用Java语言进行各类应用程序的快速开发成为目前比较主要且流行的开发方式。JDBC是 Java 语言中用来连接和操作关系型数据库的 API&#xff0c;在业务程序与关系型数据库通信时&#…

一文了解Git(所有命令)附带图片

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

机器学习算法理论:线性回归

线性回归 回归的理论解释&#xff1a;回归分析是确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法。按照自变量和因变量之间的关系类型&#xff0c;可分为线性回归分析和非线性回归分析。 如果在回归分析中&#xff0c;只包括一个自变量和一个因变量&#xff0c;…

【Linux】Linux基础之权限

目录 一、Linux中的用户1.1 用户之间的身份切换1.2 指令提权 二、权限管理2.1 文件权限2.2 权限操作2.3 chown和chgrp 三、文件类型四、目录文件的权限操作五、权限掩码六、粘滞位 一、Linux中的用户 Linux中主要有两种用户&#xff1a; root&#xff0c;超级用户非root&…

Netfilter 是如何工作的(六):连接跟踪信息的入口创建(in)和出口确认(confirm)

Articles (gitee.io) IPtables-朱双印博客 (zsythink.net) 在 Netfilter 是如何工作的(五) 中连接跟踪信息使用的创建-确认机制的 Netfilter在报文进入系统的入口处&#xff0c;将连接跟踪信息记录在报文上&#xff0c;在出口进行confirm.确认后的连接信息 本文以一个本机上送…

【MATLAB】CEEMDAN+FFT+HHT组合算法

代码原理 集成经验模态分解&#xff08;CEEMDAN&#xff09;是一种信号处理方法&#xff0c;旨在将非线性和非平稳信号分解为本质模态函数&#xff08;IMF&#xff09;。这种方法通过对信号进行多轮迭代&#xff0c;结合了噪声干扰的累计退化&#xff0c;从而更好地处理了信号…

关于React你必须知道的3个错误用法。

1. 你知道如何使用“&&”吗? 在React程序中,我经常使用“&&”运算符来决定是否显示内容,如下所示: 我的组长: “你不知道&&运算符的特性吗?当请求还没有成功返回时,会直接渲染“0”。” 我并不信服, 因为我一直都是这样编写代码,从未出过错。为了…

计算机网络技术-2022期末考试解析

【前言】 这是计算机网络技术这门课&#xff0c;感觉和计网还是有不一样的&#xff0c;但也有能做的&#xff0c;把能做的做了。 一、单项选择题&#xff08;每题2分&#xff0c;共20分&#xff09; 1. 用于测试两台计算机连通状况的命令是 。 ( ) A. cmd B. ping C. ipconf…

Java副本的概念

在Java中&#xff0c;"副本"&#xff08;copy&#xff09;一词可以用于描述不同的概念&#xff0c;具体取决于上下文。以下是两个常见的用法&#xff1a; 对象的副本&#xff1a;在Java中&#xff0c;当你创建一个对象并将其赋值给另一个变量时&#xff0c;实际上是创…

配置CentOS系统以支持静态HTTP服务

CentOS是一个流行的Linux发行版&#xff0c;广泛应用于服务器环境。要配置CentOS系统以支持静态HTTP服务&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Web服务器软件&#xff1a;CentOS自带了Apache HTTP服务器软件&#xff0c;您可以使用以下命令安装它&#xff1…

Go 知多少?

作为一名已接触过其他语言的开发&#xff0c;再去学习一门新语言可比之前轻松不少&#xff0c; 语言之间存在很多相似点&#xff0c;但是新语言也有自己的不同点&#xff0c;通常我会先了解它与其他语言常遇到的不同点有哪些&#xff0c; 使自己先能够上手编写基础程序&#…

Java多线程:初识多线程!左手画方,右手画圆

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、线程与进程二、创建线程方法1、继承Thread类2、实现Runnable接口3、两者区别4、举个栗子5、简洁写法Ⅰ、Thread匿名内部类写…

DNS 正/反向解析 主从复制 分离解析

一 DNS概念它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网 每一台 DNS 服务器都只负责管理一个有限范围 根域: 全球根服务器节点只有13个,10个在美国&#xff0c;1个荷兰&#xff0c;1个瑞典&#xff0c;1个日本 一级域名&#xff…

【已解决】C语言实现多线程的同步与异步

说真的写了这篇博文时&#xff0c;才知道c语言本身不支持多线程&#xff0c;而是一些windowsapi让c语言拥有多线程的能力&#xff0c;那下面内容就以打开对话框为例&#xff0c;展现如何实现多线程的同步与异步。 文章目录 问题起源c语言多线程同步方案c语言多线程异步方案总结…

Typora使用及Markdow学习笔记1

编程如画&#xff0c;我是panda&#xff01; 最近有在学习Markdown&#xff0c;所以这次分享一下我的Markdown学习笔记 目录 前言 一、标题 二、段落 1.换行 2.分割线 三、文字显示 1.字体 2.上下标 四、列表 1.无序列表 2.有序列表 3.任务列表 五、区块 六、代…

【Linux运维】LVM和RAID学习及实践

LVM和RAID学习及实践 背景LVM简介新加硬盘的操作RAID-磁盘阵列应用场景RAID0RAID1其他结构RAID制作RAID 小结 背景 某台服务器的磁盘管理需要自己动手处理&#xff0c;找了一些资料也踩了一些坑&#xff0c;在这里记录一下&#xff0c;先介绍一下LVM和RAID这两个东西。在计算机…