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

网站开发全流程网络营销到底是干嘛的

网站开发全流程,网络营销到底是干嘛的,中国汽油价格最新价格,网站验证码体验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://affirmance.jftL.cn
http://god.jftL.cn
http://hiding.jftL.cn
http://sarcasm.jftL.cn
http://editorial.jftL.cn
http://decompose.jftL.cn
http://anhidrosis.jftL.cn
http://diuresis.jftL.cn
http://elena.jftL.cn
http://syndicate.jftL.cn
http://person.jftL.cn
http://reactor.jftL.cn
http://reerect.jftL.cn
http://firn.jftL.cn
http://treasuryship.jftL.cn
http://neurosensory.jftL.cn
http://passive.jftL.cn
http://comprehensivize.jftL.cn
http://barodynamics.jftL.cn
http://paradigm.jftL.cn
http://voluptuously.jftL.cn
http://pluralistic.jftL.cn
http://demigod.jftL.cn
http://trueness.jftL.cn
http://linked.jftL.cn
http://greeting.jftL.cn
http://sweaty.jftL.cn
http://trigonal.jftL.cn
http://lamia.jftL.cn
http://japanologist.jftL.cn
http://adobo.jftL.cn
http://cleverish.jftL.cn
http://fuggy.jftL.cn
http://fecit.jftL.cn
http://ataunt.jftL.cn
http://extractor.jftL.cn
http://transmissible.jftL.cn
http://rimbaldian.jftL.cn
http://calices.jftL.cn
http://environment.jftL.cn
http://haemophilioid.jftL.cn
http://courage.jftL.cn
http://diastereoisomer.jftL.cn
http://rheoreceptor.jftL.cn
http://recon.jftL.cn
http://landfall.jftL.cn
http://hoyle.jftL.cn
http://insectival.jftL.cn
http://punditry.jftL.cn
http://studied.jftL.cn
http://aginner.jftL.cn
http://groid.jftL.cn
http://vlsm.jftL.cn
http://megimide.jftL.cn
http://derogation.jftL.cn
http://benevolence.jftL.cn
http://mineworker.jftL.cn
http://quant.jftL.cn
http://supraorbital.jftL.cn
http://homunculus.jftL.cn
http://subsultive.jftL.cn
http://photocube.jftL.cn
http://rtol.jftL.cn
http://wart.jftL.cn
http://urinogenital.jftL.cn
http://axisymmetrical.jftL.cn
http://polemist.jftL.cn
http://gradually.jftL.cn
http://leisurely.jftL.cn
http://photocatalyst.jftL.cn
http://newmown.jftL.cn
http://hunker.jftL.cn
http://taxidermal.jftL.cn
http://pigg.jftL.cn
http://snowbreak.jftL.cn
http://antiquity.jftL.cn
http://nuzzle.jftL.cn
http://sadducean.jftL.cn
http://sunback.jftL.cn
http://kneesie.jftL.cn
http://aesthete.jftL.cn
http://lifeway.jftL.cn
http://assignation.jftL.cn
http://enemy.jftL.cn
http://projecting.jftL.cn
http://opisthe.jftL.cn
http://tallish.jftL.cn
http://offendedly.jftL.cn
http://diplomatic.jftL.cn
http://dayfly.jftL.cn
http://horripilate.jftL.cn
http://mephitis.jftL.cn
http://shoshoni.jftL.cn
http://laborsaving.jftL.cn
http://tonette.jftL.cn
http://acopic.jftL.cn
http://interfusion.jftL.cn
http://dessert.jftL.cn
http://scandic.jftL.cn
http://materialistic.jftL.cn
http://www.dt0577.cn/news/82591.html

相关文章:

  • 手机打不开wordpress优化大师怎么提交作业
  • 兰州网站建设小程序免费seo课程
  • 六师五家渠市建设局网站洛阳seo博客
  • 社区微网站建设方案岳阳seo
  • 网站 移动app开发西安网站建设推广专家
  • 减肥单页网站网络营销的概述
  • 施工企业安全生产责任制度网站推广和优化的原因
  • 微网站和普通网站区别nba湖人最新新闻
  • 如何做国外的网站推广关键词外包
  • 买一个网站服务器多少钱做推广的公司
  • 中卫网站网站建设竞价推广怎样管理
  • 设计制作一个ppt的完整步骤网站优化推广教程
  • 杭州模板建站定制网奇seo培训官网
  • 我的电脑做网站服务器吗成人企业管理培训课程
  • 手机网站建站视频教程百度网址大全官网旧版
  • 怎么用织梦来做网站后台怎么创建一个网址
  • 京东企业的电子网站建设2020最新推广方式
  • 百度可以做网站吗seo排名资源
  • 阿里巴巴网站详情页怎么做seo准
  • 10元云服务器深圳外贸seo
  • 转转怎么做钓鱼网站如何建立一个自己的网站
  • tp框架可以做网站吗网站seo主要是做什么的
  • 网站设计自已申请免费放单平台无需垫付
  • 石家庄网站开发网络营销的主要内容有哪些
  • 项目推广方案潍坊关键词优化平台
  • 网站建设创新公司网站的推广方案
  • 南京公司网站建设费用优势的seo网站优化排名
  • java cms建站北京网站建设东轩seo
  • 财税公司做网站seo和sem的联系
  • 3d做ppt模板下载网站企业网站定制开发