云计算实训37——Dockerfile的应用+私有仓库的创建与管理

news2024/12/24 20:33:41

一、文件联合系统

文件联合系统(Overlay Filesystem):

是一种允许多个文件系统层叠在一起的文件系统。它通常用于将只读文件系统(如基础镜像)与可写文件系统(如用户的修改)结合,形成一个单一的文件系统视图。这种技术在容器化环境(如 Docker)和虚拟化中得到了广泛应用。

Overlay 文件系统的主要特点包括:

  1. 多层次结构:文件系统可以分为多个层,每一层可以是只读或可写。用户的修改会在最上层进行,而基础层保持不变。

  2. 高效性:Overlay 文件系统只在必要时加载数据,这样可以节省存储空间和提高性能。

  3. 文件共享:多个容器或用户可以共享相同的只读层,减少数据冗余。

  4. 快照和版本控制:由于其层叠结构,可以轻松创建快照并管理不同版本的文件系统。

在实际应用中,OverlayFS 是 Linux 系统中常用的实现,它提供了高效的文件系统组合能力,使得在开发和运行应用时更加灵活。

二、dockerfile应用

通过dockerfile创建⼀个在启动容器时,就可以启动httpd服务的镜像

步骤 :

1.创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件

2.在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂件

3.使⽤docker build创建镜像

4.使⽤创建的镜像启动容器(验证)

1.使用Dockerfile创建httpd镜像

# 停止docker服务
[root@docker ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

# 删除docker文件
[root@docker ~]# rm -rf /var/lib/docker/*

# 启动docker服务
[root@docker ~]# systemctl start docker

# 拉取centos镜像
[root@docker ~]#  docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

# 创建001目录
[root@docker ~]# mkdir 001

# 进到001目录下
[root@docker ~]# cd 001/

# 编辑启动脚本
[root@docker 001]# vim abc.sh

# !/bin/bash

rm -rf /run/httpd/*

exec /sbin/httpd -D FOREGROUND

# 查看创建的脚本
[root@docker 001]# ls
abc.sh

# 编辑index.html文件
[root@docker 001]# echo "httpd server is running" > index.html
[root@docker 001]# ls
abc.sh  index.html

# 编辑Dockerfile文件
[root@docker 001]# vim Dockerfile
FROM    centos:latest

MAINTAINER      "centos httpd server"

RUN     rm -rf /etc/yum.repos.d/*  

RUN     curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

RUN     yum clean all && yum makecache

RUN     yum -y install epel-release

RUN     yum -y install httpd

ADD     abc.sh /abc.sh

ADD     index.html /var/www/html/index.html

RUN     chmod -v +x /abc.sh

CMD     ["/bin/bash","/abc.sh"]

# 初看当前的路径
[root@docker 001]# pwd
/root/httpd0

# 查看创建的文件
[root@docker 001]# ls
abc.sh  Dockerfile  index.html

# 创建镜像
[root@docker 001]# docker build -t centos:httpd .
[+] Building 64.6s (14/14) FINISHED                                    docker:default
 => [internal] load build definition from Dockerfile                             0.0s
 => => transferring dockerfile: 546B                                             0.0s
 => [internal] load metadata for docker.io/library/centos:latest                 0.0s
 => [internal] load .dockerignore                                                0.0s
 => => transferring context: 2B                                                  0.0s
 => [1/9] FROM docker.io/library/centos:latest                                   0.0s
 => [internal] load build context                                                0.0s
 => => transferring context: 282B                                                0.0s
 => [2/9] RUN     rm -rf /etc/yum.repos.d/*                                      0.2s
 => [3/9] RUN     curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.ali  0.5s
 => [4/9] RUN     yum clean all && yum makecache                                37.5s
 => [5/9] RUN     yum -y install epel-release                                    1.5s 
 => [6/9] RUN     yum -y install httpd                                          24.4s 
 => [7/9] ADD     abc.sh /abc.sh                                                 0.0s 
 => [8/9] ADD     index.html /var/www/html/index.html                            0.0s 
 => [9/9] RUN     chmod -v +x /abc.sh                                            0.1s 
 => exporting to image                                                           0.3s 
 => => exporting layers                                                          0.3s 
 => => writing image sha256:75b16235c09a77040511b510a9c1e9b64a81b779f611e9baf80  0.0s 
 => => naming to docker.io/library/centos:httpd                                  0.0s

# 查看镜像
[root@docker 001]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       httpd     75b16235c09a   2 minutes ago   338MB
centos       latest    5d0da3dc9764   2 years ago     231MB

# 查看docker文件的变化
[root@docker 001]# ls /var/lib/docker/overlay2/
2e14mkmhsyqml8yz8xx6gkkfn
3gptwrcuxsr2z3ud201n5gg9j
backingFsBlockDev
e0dfg5mgrat7u2jzgxvgfj6mx
fc6fcbe50f7cd8967fba6b54c30675443571463587d0d0bc735cd28a4214dbd4
gwiapvpmctfmwsjpj4fhwpwfk
i1no1l3564opovspusav7juge
iafohrok69hr2srb4sgehmeq1
kh7i34l3wsr17f41sv1mpbnqr
l
nghnnma9u2ktpsgeb9kxxzjjm
oor91hz24u4ux6v2h0u2ayx6v
qta19zq5kinbictlivuvkr06r
tyce637p8xvl9en1bx2lg086s

# 创建容器测试
[root@docker 001]# docker run -d --name c0 centos:httpd 
d398df1d2b235ad09068fa3b84b9ad2e0c31c03815982a92882609055a04d9ae

# 查看容器
[root@docker 001]# docker ps --all
CONTAINER ID   IMAGE          COMMAND               CREATED          STATUS         PORTS     NAMES
d398df1d2b23   centos:httpd   "/bin/bash /abc.sh"   10 seconds ago   Up 9 seconds             c0

# 访问测试
[root@docker 001]# curl 172.17.0.2
httpd server is running

# 容器挂载
[root@docker 001]# docker run -d -v /opt/:/var/www/html/ -p80 --name c1 centos:httpd
cb8c1626ce9a6ea8986c40f0efa4f657192ff7babf9aecd4acbfcc115f7e5d83
[root@docker 001]# ls /opt/
assets  containerd  favicon.ico  index.html

# 写测试内容
[root@docker 001]# echo "adsfadfafwqrdfqdsafdgdfsgda" > /opt/index.html

# 访问测试
[root@docker 001]# curl 172.17.0.2
adsfadfafwqrdfqdsafdgdfsgda

# 查看容器
[root@docker 001]# docker ps -all
CONTAINER ID   IMAGE          COMMAND               CREATED          STATUS          PORTS                                     NAMES
cb8c1626ce9a   centos:httpd   "/bin/bash /abc.sh"   22 seconds ago   Up 22 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   c1

浏览器访问:192.168.2.30:32768

2.使用Dockerfile创建yum镜像

# 修改Dockerfile文件
[root@docker 001]# vim Dockerfile 
FROM    centos:latest

MAINTAINER      "centos httpd server"

RUN     rm -rf /etc/yum.repos.d/*

RUN     curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

RUN     yum clean all && yum makecache

RUN     yum -y install epel-release

# 运行文件创建镜像
[root@docker 001]# docker build -t centos:yum .
[+] Building 0.0s (9/9) FINISHED                                       docker:default
 => [internal] load build definition from Dockerfile                             0.0s
 => => transferring dockerfile: 385B                                             0.0s
 => [internal] load metadata for docker.io/library/centos:latest                 0.0s
 => [internal] load .dockerignore                                                0.0s
 => => transferring context: 2B                                                  0.0s
 => [1/5] FROM docker.io/library/centos:latest                                   0.0s
 => CACHED [2/5] RUN     rm -rf /etc/yum.repos.d/*                               0.0s
 => CACHED [3/5] RUN     curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirr  0.0s
 => CACHED [4/5] RUN     yum clean all && yum makecache                          0.0s
 => CACHED [5/5] RUN     yum -y install epel-release                             0.0s
 => exporting to image                                                           0.0s
 => => exporting layers                                                          0.0s
 => => writing image sha256:ee9375ac855c3a1f8ec3eb03cee9317c3127e4be47cb3d6f519  0.0s
 => => naming to docker.io/library/centos:yum                                    0.0s
 
# 查看镜像
[root@docker 001]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       httpd     ebbf109944f1   5 minutes ago   338MB
centos       yum       ee9375ac855c   5 minutes ago   272MB
centos       latest    5d0da3dc9764   2 years ago     231MB

# 查看docker磁盘使用情况
[root@docker 002]# du -sh /var/lib/docker/overlay2/
1.1G	/var/lib/docker/overlay2/

3.使用Dockerfile创建nginx镜像

# 创建目录
[root@docker ~]# mkdir 002

# 进到002目录下
[root@docker ~]# cd 002/

# 编辑Dockerfile文件
[root@docker 002]# vim Dockerfile

# 这里使用之前创建的yum镜像
FROM    centos:yum 

MAINTAINER      维护世界和平

RUN     yum -y install nginx

RUN     yum -y install epel-release

RUN     echo "daemon off;" >> /etc/nginx/nginx.conf

EXPOSE  80

CMD     /usr/sbin/nginx

# 运行Dockerfile文件-创建nginx镜像
[root@docker 002]# docker build -t centos:nginx .
[+] Building 80.1s (8/8) FINISHED                                      docker:default
 => [internal] load build definition from Dockerfile                             0.0s
 => => transferring dockerfile: 280B                                             0.0s
 => [internal] load metadata for docker.io/library/centos:yum                    0.0s
 => [internal] load .dockerignore                                                0.0s
 => => transferring context: 2B                                                  0.0s
 => [1/4] FROM docker.io/library/centos:yum                                      0.0s
 => [2/4] RUN YUM -y install nginx                                              73.0s
 => [3/4] RUN YUM -y install epel-release                                        6.5s
 => [4/4] RUN ECHO "daemon" > /etc/nginx/nginx.conf                              0.1s 
 => exporting to image                                                           0.4s 
 => => exporting layers                                                          0.4s 
 => => writing image sha256:c7c536aca7946e111b2af5f1d2806bdac9f1e9a59d8bd05ccac  0.0s 
 => => naming to docker.io/library/centos:nginx                                  0.0s 
 
# 查看镜像
[root@docker 002]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       nginx     c7c536aca794   58 seconds ago   422MB
centos       httpd     ebbf109944f1   29 minutes ago   338MB
centos       yum       ee9375ac855c   29 minutes ago   272MB
centos       latest    5d0da3dc9764   2 years ago      231MB

# 使用nginx镜像创建容器c1
[root@docker 002]# docker run -d --name nc centos:nginx 
34bf6e6f1ecfcb0e1f717385a3553fe058bab65caa4603280951d98976efebe6

# 查看创建的容器
[root@docker 002]# docker ps --all
CONTAINER ID   IMAGE          COMMAND                   CREATED             STATUS             PORTS                                     NAMES
34bf6e6f1ecf   centos:nginx   "/bin/sh -c /usr/sbi…"   8 seconds ago       Up 7 seconds       80/tcp                                    nc
4c437591541d   centos:nginx   "/bin/sh -c /usr/sbi…"   4 minutes ago       Up 4 minutes       80/tcp                                    ng
cb8c1626ce9a   centos:httpd   "/bin/bash /abc.sh"       About an hour ago   Up About an hour   0.0.0.0:32768->80/tcp, :::32768->80/tcp   c1
d398df1d2b23   centos:httpd   "/bin/bash /abc.sh"       About an hour ago   Up About an hour                                             c0

三、私有仓库

1.安装registry

# 查看安装的镜像
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
centos       nginx     4a14f7d33da9   8 minutes ago       422MB
centos       httpd     ebbf109944f1   About an hour ago   338MB
centos       yum       ee9375ac855c   About an hour ago   272MB
registry     latest    cfb4d9904335   10 months ago       25.4MB
centos       latest    5d0da3dc9764   2 years ago         231MB

2.创建容器,映射端⼝,挂载⽂件

# 创建挂载目录
[root@docker ~]# mkdir /regist

# 查看容器--全部删掉
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

# 创建容器,映射端⼝,挂载⽂件
[root@docker ~]# docker run -d --name r1 -v /regist/:/var/lib/registry -p5000:5000 registry:latest
4cd2b4d2c49fb4bdc6cf64aacea6c72a38f2c0eb3beccc6ed6845447b081a06f

# 查看创建的容器
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                       NAMES
4cd2b4d2c49f   registry:latest   "/entrypoint.sh /etc…"   3 seconds ago   Up 2 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1

# 访问目录页
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

3.浏览器访问

192.168.2.30:5000/v2/_catalog

4.配置pull和push,修改daemon.json文件

[root@docker ~]# vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ],
        "hosts":  [
                  "tcp://0.0.0.0:2375",
                  "unix:///var/run/docker.sock"
        ],
        "insecure-registries":[
                "http://192.168.2.30:5000"

        ]
}

5.修改了daemon.json文件,重启服务

[root@docker ~]# systemctl restart docker.service 

6.启动registry容器

# 查看容器
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS                     PORTS     NAMES
4cd2b4d2c49f   registry:latest   "/entrypoint.sh /etc…"   10 minutes ago   Exited (2) 2 minutes ago             r1

# 启动r1容器
[root@docker ~]# docker start r1
r1

# 访问⽬录⻚
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

7.给yum镜像打标签

# 为要上传的镜像添加标记
[root@docker ~]# docker tag centos:yum 192.168.2.30:5000/centos:yum

# 查看打标签的镜像
[root@docker ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED          SIZE
centos                     nginx     4a14f7d33da9   33 minutes ago   422MB
centos                     httpd     ebbf109944f1   2 hours ago      338MB
192.168.2.30:5000/centos   yum       ee9375ac855c   2 hours ago      272MB
centos                     yum       ee9375ac855c   2 hours ago      272MB
registry                   latest    cfb4d9904335   10 months ago    25.4MB
centos                     latest    5d0da3dc9764   2 years ago      231MB

8.将打标签的镜像上传到registry上

[root@docker ~]# docker push 192.168.2.30:5000/centos:yum
The push refers to repository [192.168.2.30:5000/centos]
8c519ad003b5: Pushed 
acbca50d3a83: Pushed 
75cdf155cf76: Pushed 
07d4b334a739: Pushed 
74ddd0ec08fa: Pushed 
yum: digest: sha256:fa3b19efa5dd7e95f2ea17a3d3ffd2b22ffedc3ddef9af6a69e60239db568a6c size: 1366

9.在主机上进行访问

[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":["centos"]}

10.浏览器访问

192.168.2.30:5000/v2/_catalog

11.查看regist文件

[root@docker ~]# ls /regist/
docker
[root@docker ~]# cd /regist/docker/
[root@docker docker]# ls
registry
[root@docker docker]# cd registry/
[root@docker registry]# ls
v2
[root@docker registry]# cd v2
[root@docker v2]# ls
blobs  repositories
[root@docker v2]# cd repositories/
[root@docker repositories]# ls
centos
[root@docker repositories]# cd centos/
[root@docker centos]# ls
_layers  _manifests  _uploads
[root@docker centos]# cd _layers/
[root@docker _layers]# ls
sha256
[root@docker _layers]# cd sha256/
[root@docker sha256]# ls
30902bbca4a1d948703fd88d834ddf4dc8db69bb7e787ff18a762b6b4761fe37
46aacd2dd64664a37b01ee3a9f37561ed9b34c5af6661b880ee07a15d5fe8fd6
5a3d9ba04912ac6b1353410a0f18cc206b4920888e3187443abacefe3c9086ab
a1d0c75327776413fa0db9ed3adcdbadedc95a662eb1d360dad82bb913f8a1d1
ca847d29e1079f24cfc92b68cf37d5866060814df67cbdcd83edb16f1dc4fe54
ee9375ac855c3a1f8ec3eb03cee9317c3127e4be47cb3d6f519d9e6921a6a044

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

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

相关文章

2k1000LA 调试触摸+调试8723bu

原材料: 硬件: 2k1000LA 开发板 软件: 使用网盘上的 pmon 源码 linux源码 逻辑: 设备树的修改需要在 pmon 源码里面修改 驱动的修改需要在 linux 的源码里面修改。 下载 loongnix 的 pmon 源码 linux 源码 ,并放入虚…

雷达图概述以及实例

目录 一.雷达图概述1.何为雷达图2.雷达图的构成要素 二.实例(以Excel、Python为例 )1.Excel(2021版)2.Python 一.雷达图概述 1.何为雷达图 雷达图,是一种展现多维度数据间相对重要性或程度的可视化图形。以中心点为起…

软件测试方法之场景法详解及实战

一、游戏测试与软件测试流程的区别 1.1 区别对比 游戏测试的流程与软件测试流程的区别大同小异,但仍然会根据公司的情况做出不同的策略和应对方式,在体验方面会存在较大的差异    (这里只单纯阐述流程上的区别,不细分延展&#…

记一次山东省某测试平台渗透测试

最近: 离开山东有段时间了,今天刚好有空就回头看看(意难平),搭建框架是WINDOWSIISASP.NET这个演示版上直接泄露了账号密码,admin/111111。 登录框先试一下SQL注入 SQL注入 bp抓包结果 开局就找了登录框SQL注入,先进后台看一下功…

横向移动:勒索软件攻击正在展开的最明显迹象

据 Barracuda Networks 称,44% 的勒索软件攻击是在横向移动期间发现的。 25% 的事件是在攻击者开始编写或编辑文件时检测到的,14% 的事件因不符合已知活动模式的行为而被揭露。 研究人员分析了 2023 年 8 月至 2024 年 7 月期间报告的 200 起事件样本&…

PyTorch深度学习模型训练流程:(一、分类)

自己写了个封装PyTorch深度学习训练流程的函数,实现了根据输入参数训练模型并可视化训练过程的功能,可以方便快捷地检验一个模型的效果,有助于提高选择模型架构、优化超参数等工作的效率。发出来供大家参考,如有不足之处&#xff…

iPhone 16要发布了,iPhone 13 咋办啊

iPhone 16要发布了,iPhone 13 咋办啊? Phone 16的屏幕尺寸和分辨率是多少? iPhone 16采用了6.1英寸的超视网膜XDR显示屏,与iPhone 15相同。屏幕分辨率达到了25561179像素,像素密度为460ppi,为用户提供了清…

一、菜单扩展

一、创建文件夹 创建一个名为Editor的文件夹。unity会默认这个名字为工程文件夹 二、创建代码 实现点击unity菜单,对应代码的方法 引用命名空间;使用这个menuitem 注:必须有一个子路径,不然会报错 这里是这个方法的参数 每一个…

并发式服务器

并发式服务器是一种设计用来同时处理多个客户端请求的服务器。这种服务器能够提高资源利用率和响应速度,适用于需要服务大量用户的网络应用。以下是并发式服务器的一些关键特点: 多任务处理:并发式服务器能够同时处理多个任务或请求&#xff…

【Python】成功解决 ModuleNotFoundError: No module named ‘lpips‘

【Python】成功解决 ModuleNotFoundError: No module named ‘lpips’ 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:98…

LDR ,DTR 指令详解 (17)

arm 的 大致的架构。 LDR{条件} 目的寄存器&#xff0c; <存储器地址> 功能&#xff1a; 将存储器的一个32的数据&#xff0c;保存到寄存器中。 但是这条指令还有另外一个作用。 如果 目的寄存器是PC的话&#xff0c;而从内存中读到的数据是一块内存的地址&#xff0…

正则表达式模块re及其应用

正则表达式是一种强大的文本处理工具&#xff0c;能够用来匹配、查找、替换复杂的文本模式。Python中的正则表达式由re模块提供。 以下是一些常用的方法及示例&#xff1a; 一. 常用方法 re.match() 从头开始匹配re.search() 搜索第一个匹配串re.findall() 查找所有匹配项re…

代码随想录Day 27|贪心算法,题目:455.分发饼干、376.摆动序列、53.最大子序和

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 贪心算法Part01一、理论基础1.1 什么是贪心贪心算法解法&#xff1a;动态规划解法&#xff1a; 1.2 贪心一般解题步骤 二、题目题目一&#xff1a;455.分发饼干解题思路&#xff1a;其他思路 题目…

【Datawhale AI夏令营第五期】 CV方向 Task02学习笔记 精读Baseline 建模方案解读与进阶

【Datawhale AI夏令营第五期】 CV方向 Task02学习笔记 精读Baseline 建模方案解读与进阶 教程&#xff1a; 链接&#xff1a; https://linklearner.com/activity/16/16/68 传送门 之前我看原画课的时候&#xff0c;造型的部分就跟我们说&#xff0c;让我们日常观察事物的时候…

海运系统:海运拼箱 小批量货物的海运奥秘

在国际海运运输的广阔领域中&#xff0c;海运拼箱作为一种灵活且经济的运输方式&#xff0c;尤其适用于那些货物量不大或体积不足以单独填满一个标准集装箱的场景。这种运输模式不仅促进了国际贸易的便捷性&#xff0c;还通过资源共享的方式&#xff0c;有效降低了物流成本&…

p10 容器的基本命令

首先先拉取一个centos的镜像 命令&#xff1a;docker pull centos 新建容器并且启动 这里直接参考老师的命令吧 接下来是启动并且进入到容器当中去输入docker run -it centos /bin/bash这里是以交互的方式进入到容器中可以看到接下来的ls命令输出的东西就是一个Linux系统最…

Ansys Speos | 挡风玻璃光学畸变分析

附件下载 联系工作人员获取附件 此示例介绍了基于 TL 957 标准和43号法规&#xff08;ECE R43&#xff09;的挡风玻璃光学畸变分析的工作流程&#xff0c;以及 GitHub Ansys 光学自动化中提供的分析自动化工具。 如果您从未使用过任何 GitHub 仓库&#xff0c;可以根据光学自…

数据结构(邓俊辉)学习笔记】串 07——KMP算法:分摊分析

文章目录 1.失之粗糙2.精准估计 1.失之粗糙 以下&#xff0c;就来对 KMP 算法的性能做一分析。我们知道 KMP 算法的计算过程可以根据对齐位置相应的分为若干个阶段&#xff0c;然而每一个阶段所对应的计算量是有很大区别的。很快就会看到&#xff0c;如果只是简单地从最坏的角…

K8S的持久化存储

文章目录 一、持久化存储emptyDir实际操作 hostPath建立过程 NFS存储NFS 存储的优点NFS 存储的缺点具体操作 pv和pvcPersistent Volume (PV)使用场景 Persistent Volume Claim (PVC)使用场景 使用 PV 和 PVC 的场景实际操作 StorageClassStorageClass 概述应用场景实际应用 一、…

实用攻略:亲身试用,高效数据恢复软件推荐!

今天要跟大家分享一下我使用几款数据恢复软件的经历。如果你曾经丢失过重要的文件&#xff0c;那除了注意备份外&#xff0c;也可以尝试一下这些非常棒的免费数据恢复软件&#xff01; 第一款&#xff1a;福昕数据恢复 链接&#xff1a;www.pdf365.cn/foxit-restore/ 首先聊…