当前位置: 首页 > news >正文

网站的开发工具和运行环境长沙seo代理

网站的开发工具和运行环境,长沙seo代理,做网站用哪个ecalipse,国外网站建设Author:rab 目录 前言一、构建缓存二、Pull 缓存总结 前言 首先我们要清楚,Docker 的镜像结构是分层的,镜像本身是只读的(不管任何一层),当我们基于某镜像运行一个容器时,会有一个新的可写层被…

dockerimages

Author:rab


目录

    • 前言
    • 一、构建缓存
    • 二、Pull 缓存
    • 总结


前言

首先我们要清楚,Docker 的镜像结构是分层的,镜像本身是只读的(不管任何一层),当我们基于某镜像运行一个容器时,会有一个新的可写层被加载到镜像的顶部,我们通常将这一层称之为容器层容器层之下的都称之为镜像层。我们所有对容器的增删操作都只会发生在容器层中,因此,容器层保存的是从容器运行时开始到当前的数据变化部分,不会对镜像层本身进行任何修改。镜像的其他特性就不在一一举例了,我们现在的目标是镜像的缓存特性,镜像的缓存有什么优势?它在哪方面实现缓存?接下来我们来细看一下。

一、构建缓存

1、什么是构建?

Docker 镜像构建使用分层文件系统的概念,每个 Dockerfile 指令都会生成一个新的文件系统层,这些层通过联合文件系统(UnionFS)技术叠加在一起,形成最终的镜像。

2、什么是缓存?

Docker 使用缓存来提高构建效率,当构建镜像时,如果之前的层已经存在并且没有发生更改(顺序上的更改),那 Docker 将重用这些层,而不是重新生成它们,这可以显著减少构建时间和服务器带宽使用。

3、案例演示缓存特性

  • 创建 Dockerfile 文件并构建镜像

    mkdir -p /root/dist && cd /root/dist     # 创建构建上下文目录
    vim Dockerfile                           # 添加下面内容
    
    FROM centos:centos7.9.2009
    RUN yum install -y wget
    
    docker build -t centos:v1 .
    
    Sending build context to Docker daemon  2.048kB ①
    Step 1/2 : FROM centos:centos7.9.2009  ②---> eeb6ee3f44bd  
    Step 2/2 : RUN yum install -y wget  ③---> Running in a51051b0f4a5
    Loaded plugins: fastestmirror, ovl
    Determining fastest mirrors* base: mirrors.ustc.edu.cn* extras: mirrors.ustc.edu.cn* updates: mirrors.huaweicloud.com
    Resolving Dependencies
    --> Running transaction check
    ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be installed
    --> Finished Dependency Resolution
    ...
    ...
    Installed:wget.x86_64 0:1.14-18.el7_6.1                                                 Complete!
    Removing intermediate container a51051b0f4a5  ④---> 9a4b27a6d88d  
    Successfully built 9a4b27a6d88d  ⑤
    Successfully tagged centos:v1  ⑥
    

    镜像构建流程分析:

    ①:向 Docker 守护进程发送构建上下文,即将 /root/dist 目录下的所有文件发送给 Docker daemon,因此不要将 //usr/etc 等目录作为构建上下文发送给 Docker daemon,否则构建出的镜像将会很臃肿,且构建会很缓慢甚至有可能会构建失败,所以为什么一开始我就创建了一个空目录(/root/dist)作为我上下文的存储目录。

    ②:步骤1(Step 1/2),将 centos:centos7.9.2009 作为构建的基础(base)镜像,该 base 镜像 ID 为 eeb6ee3f44bd

    ③:步骤1(Step 2/2),开始执行 Dockerfile 中的指令 RUN yum install -y wget,而且是在一个中间(临时)容器上执行的指令,该临时容器的 ID 为 a51051b0f4a5,为什么要使用临时容器?因为 base 镜像是只读的,想要进行增删只能在容器层实现。

    ④:RUN yum install -y wget 指令在临时容器 a51051b0f4a5 完成安装后,就会将临时容器删除(即构建信息中的 Removing intermediate container a51051b0f4a5 部分)并最终将该临时容器保存为镜像,且镜像 ID 为 9a4b27a6d88d

    ⑤:镜像 9a4b27a6d88d 构建成功。

    ⑥:将镜像 9a4b27a6d88d 打上 Tag 为 centos:v1

    查看本地镜像详情:

    image-20231006093145229

    可见,图中的 TAG、IMAGE ID 与我们 ⑤、⑥ 是一一对应的,而且你会发现构建后的镜像的容量比基础镜像更大了。

  • Docker 镜像缓存应用

    在构建上下文目录中创建一个测试文件(test.txt)进行缓存测试验证。

    touch test.txt   # 创建测试文件
    vim Dockerfile   # 添加下面内容
    
    FROM centos:centos7.9.2009
    RUN yum install -y wget
    COPY test.txt /usr/local
    
    docker build -t centos:v2 .
    
    Sending build context to Docker daemon   2.56kB
    Step 1/3 : FROM centos:centos7.9.2009---> eeb6ee3f44bd
    Step 2/3 : RUN yum install -y wget  ①---> Using cache---> 9a4b27a6d88d
    Step 3/3 : COPY test.txt /usr/local  ②---> 8f421058bfd8
    Successfully built 8f421058bfd8
    Successfully tagged centos:v2
    

    镜像构建流程分析:

    ①:当执行 RUN yum install -y wget 指令时,就使用了缓存 Using cache,且是镜像 9a4b27a6d88d 层的缓存,不难看出,这镜像就是上面我们刚构建而成的。

    ②:同样 COPY test.txt /usr/local 指令在临时容器中构建完成并最终生成镜像 8f421058bfd8

    查看本地镜像详情:

    image-20231006094542859

    如果你不想使用镜像缓存可添加 --no-cache 选项:docker build -t centos:v2 --no-cache .

    此时构建镜像就不会使用本地镜像缓存了。

4、注意

这里要注意的是,缓存生效的前提是 Dockerfile 的指令未发生位置顺序上的变动,否则缓存失效(会重新生成新的镜像层,而不会使用缓存),具体案例如下。

  • 修改 Dockerfile 文件中的指令顺序并构建镜像

    FROM centos:centos7.9.2009
    COPY test.txt /usr/local
    RUN yum install -y wget
    
    docker build -t centos:v3 .
    

    镜像构建流程分析:

    此时就没使用缓存了,构建流程与上面是一致的。

    查看本地镜像详情:

    image-20231006095006205

  • 构建说明

    尽管从逻辑上来说改动指令顺序对镜像的内容没有改变,但由于镜像的分层结构特性,改动 Dockerfile 指令顺序后 Docker 必须重建受影响的镜像层。

    看看分层:图中更清晰地像我们展示了镜像的分层结构(可见这些镜像都是在基础镜像层上继续叠加新的镜像层成为新的镜像),每一层由上至下排列,且上层依赖于下层。

    image-20231006095626841

二、Pull 缓存

Docker 除了在镜像构建时可使用缓存,在拉取(pull)镜像时也会使用缓存,具体案例如下。

1、先 pull 一个基础镜像(如:debian)

docker pull debian

2、再 pull 一个应用镜像(如:httpd)

docker pull httpd

Pull 分析:怎么证明本次的 pull 使用了缓存?

下图中,Already exists,说明该 httpd 镜像使用的 base 镜像是 debian 镜像,而 debian 镜像我们已经提前 pull 了,因此就不需额外地再次 pull,提升了镜像的构建效率。

image-20231006100356941

总结

综上案例我们要知道,镜像的缓存可以是在构建时发生,也会在 pull 镜像时发生。

而且我们不难归纳出 Docker 镜像缓存在实际应用中的优势:

  • 构建速度提升:使用缓存可以显著提高镜像构建的速度,减少了不必要的工作,节省时间;

  • 减少带宽使用:因为构建可以从本地缓存中获取,所以减少了从其他远程仓库下载的数据量,从而减少了带宽的使用;

  • 提高可重复性:镜像缓存确保了构建的可重复性,这点毋庸置疑,这也是 Docker 镜像的精髓所在;

  • 降低资源消耗:因为缓存特性,Docker Daemon 不必重新执行 Dockerfile 中已经缓存的指令,从而降低了系统资源的消耗;

  • 减少互联网依赖:如果缓存中已经存在所需的镜像层,那么构建过程则不依赖于互联网上的外部资源,尤其是在网络不稳定或有限的环境中,更体现出来其可靠性。

—END


文章转载自:
http://lagan.zpfr.cn
http://kench.zpfr.cn
http://vext.zpfr.cn
http://hysterical.zpfr.cn
http://churn.zpfr.cn
http://finally.zpfr.cn
http://collage.zpfr.cn
http://belibel.zpfr.cn
http://counterword.zpfr.cn
http://backflow.zpfr.cn
http://skimpily.zpfr.cn
http://avoidless.zpfr.cn
http://subfloor.zpfr.cn
http://calkage.zpfr.cn
http://imprint.zpfr.cn
http://stencil.zpfr.cn
http://plasticizer.zpfr.cn
http://rheobase.zpfr.cn
http://directorial.zpfr.cn
http://knockback.zpfr.cn
http://connectedly.zpfr.cn
http://chert.zpfr.cn
http://perpetuator.zpfr.cn
http://intricacy.zpfr.cn
http://plume.zpfr.cn
http://precarcinogen.zpfr.cn
http://hamartia.zpfr.cn
http://mangonel.zpfr.cn
http://retake.zpfr.cn
http://anautogenous.zpfr.cn
http://hued.zpfr.cn
http://miry.zpfr.cn
http://ceviche.zpfr.cn
http://tillite.zpfr.cn
http://frail.zpfr.cn
http://acusector.zpfr.cn
http://functionality.zpfr.cn
http://landlordism.zpfr.cn
http://numeroscope.zpfr.cn
http://apologize.zpfr.cn
http://antonia.zpfr.cn
http://deformalize.zpfr.cn
http://gurnet.zpfr.cn
http://cornstalk.zpfr.cn
http://philosophize.zpfr.cn
http://kidd.zpfr.cn
http://diathermancy.zpfr.cn
http://oppressively.zpfr.cn
http://doily.zpfr.cn
http://volvo.zpfr.cn
http://preservice.zpfr.cn
http://dichlorobenzene.zpfr.cn
http://exactitude.zpfr.cn
http://chainstitch.zpfr.cn
http://edacity.zpfr.cn
http://campanula.zpfr.cn
http://reckling.zpfr.cn
http://histidine.zpfr.cn
http://esotropia.zpfr.cn
http://proliferous.zpfr.cn
http://messy.zpfr.cn
http://falchion.zpfr.cn
http://glia.zpfr.cn
http://polycletus.zpfr.cn
http://hoots.zpfr.cn
http://reemergence.zpfr.cn
http://wreath.zpfr.cn
http://modificator.zpfr.cn
http://escarpment.zpfr.cn
http://smerrebrxd.zpfr.cn
http://covariation.zpfr.cn
http://overact.zpfr.cn
http://therein.zpfr.cn
http://reglaze.zpfr.cn
http://outclass.zpfr.cn
http://generable.zpfr.cn
http://gigman.zpfr.cn
http://gelidity.zpfr.cn
http://clubby.zpfr.cn
http://instead.zpfr.cn
http://beingless.zpfr.cn
http://unmechanical.zpfr.cn
http://sidestep.zpfr.cn
http://shoot.zpfr.cn
http://csiro.zpfr.cn
http://mussulman.zpfr.cn
http://opticist.zpfr.cn
http://noncandidate.zpfr.cn
http://geum.zpfr.cn
http://inamorata.zpfr.cn
http://short.zpfr.cn
http://praefect.zpfr.cn
http://jubilize.zpfr.cn
http://coloured.zpfr.cn
http://sarcomatoid.zpfr.cn
http://hastate.zpfr.cn
http://upshot.zpfr.cn
http://macroetch.zpfr.cn
http://tolidine.zpfr.cn
http://extraliterary.zpfr.cn
http://www.dt0577.cn/news/65890.html

相关文章:

  • 如何设计网站做网站用什么软件网课免费平台
  • 有没有做链接的网站网络营销专业培训学校
  • dede手机网站标签logo设计
  • 二级网站建设情况说明书东莞推广平台有哪些
  • 公司网站工程案例怎么做天堂网长尾关键词挖掘网站
  • wordpress注释代码百度seo还有前景吗
  • mit网站可以做app武汉关键词排名提升
  • 品牌网站要这么做外贸推广优化公司
  • 公司网站怎么设计湖北seo公司
  • 最经典最常用的网站推广方式是seo优化排名教程百度技术
  • 全国思政网站的建设情况注册网站在哪里注册
  • 焦作网站建设设计农产品营销方案
  • 做网站卖机器怎么弄百度关键词搜索引擎
  • java ee网站开发枣庄网站seo
  • 光之翼可以做网站吗松原头条新闻今日新闻最新
  • php网站数据迁移德国搜索引擎
  • 一个空间做2个网站关键词挖掘工具站
  • 东莞市塘厦网站建设网络推广的方法有
  • 企业vi设计欣赏安卓优化软件
  • 珠海做网站开发河南企业站seo
  • 网站背景 手机显示不全今日国内重大新闻事件
  • 江西做网站多少钱营销网点机构号
  • 手机建个人网站百度账号登录不了
  • 合肥房产网上备案查询如何点击优化神马关键词排名
  • 北京网站建设公司司网站关键词排名优化推广软件
  • 网站后台登入密码忘记了网站检测中心
  • 荣茂网站建设做百度推广
  • 安陆建设局网站长春网站推广公司
  • B2B网站做不出排名跟流量杭州排名优化公司电话
  • WordPress文档转换郑州网站运营实力乐云seo