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

青岛做教育的网站建设百度seo规则最新

青岛做教育的网站建设,百度seo规则最新,做代购在哪个网站进货,韩漫网站建设说在前面 在40岁老架构师 尼恩的读者交流群(50)中,面试题是一个非常、非常高频的交流话题。 最近,有小伙伴面试极兔时,遇到一个面试题: 如果优化 Dockerfile? 小伙伴没有回答好,只是提到了减少镜像层数。…

说在前面

在40岁老架构师 尼恩的读者交流群(50+)中,面试题是一个非常、非常高频的交流话题。

最近,有小伙伴面试极兔时,遇到一个面试题:

如果优化 Dockerfile?

小伙伴没有回答好,只是提到了减少镜像层数。

一般来说,面试的小伙伴,大部分都会说

  1. 使用更小的基础镜像, 比如 alpine.
  2. 减少镜像层数, 比如 使用 && 符号将命令链接起来。
  3. 给基础镜像打上 安全补丁

但这些,其实都是单点的优化。优化 Dockerfile 的核心是 合理分层、构建一个精良的基础镜像

这里尼恩给大家做一下系统化、体系化的梳理,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”

也一并把这个题目以及参考答案,收入咱们的 《尼恩Java面试宝典》V46版本,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。

注:本文以 PDF 持续更新,最新尼恩 架构笔记、面试题 的PDF文件,请从这里获取:码云


为什么要优化镜像

首先,回到起点。为啥要优化 镜像?优化镜像的好处是:

  • 一个小镜像有什么好处: 分发更快,存储更少,加载更快。
  • 镜像臃肿带来了什么问题: 存储过多,分发更慢且浪费带宽更多。

镜像的构成

其次,来看看镜像的构成。从两个维度来看:

  • 俯瞰镜像: 就是一个删减版的操作系统。
  • 侧看镜像: 由一层层的 layer 堆叠而成

那么问题来了

应该如何优化镜像?

举个例子 docker build

  • Dockerfile v1
# v1
FROM nginx:1.15-alpine
RUN echo "hello"
RUN echo "demo best practise"
ENTRYPOINT [ "/bin/sh" ]
  • Dockerfile v2
# v2
FROM nginx:1.15-alpine
RUN echo "hello"
RUN echo "demo best practise"
ENTRYPOINT [ "/bin/sh" ]

1st build

全新构建

# docker build -t demo:0.0.1 .                          
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM nginx:1.15-alpine---> 9a2868cac230
Step 2/4 : RUN echo "hello"---> Running in d301b4b3ed55
hello
Removing intermediate container d301b4b3ed55---> 6dd2a7773bbc
Step 3/4 : RUN echo "demo best practise"---> Running in e3084037668e
demo best practise
Removing intermediate container e3084037668e---> 4588ecf9837a
Step 4/4 : ENTRYPOINT [ "/bin/sh" ]---> Running in d63f460347ff
Removing intermediate container d63f460347ff---> 77b52d828f21
Successfully built 77b52d828f21
Successfully tagged demo:0.0.1

2nd build

Dockerfile 与 1st build 完全一致, 命令仅修改 build tag , 从 0.0.10.0.2

# docker build -t demo:0.0.2 .
Sending build context to Docker daemon  4.096kB
Step 1/4 : FROM nginx:1.15-alpine---> 9a2868cac230
Step 2/4 : RUN echo "hello"---> Using cache---> 6dd2a7773bbc
Step 3/4 : RUN echo "demo best practise"---> Using cache---> 4588ecf9837a
Step 4/4 : ENTRYPOINT [ "/bin/sh" ]---> Using cache---> 77b52d828f21
Successfully built 77b52d828f21
Successfully tagged demo:0.0.2

可以看到,

  1. 每层 layer 都使用 cache ( ---> Using cache) ,并未重新构建。
  2. 我们可以通过 docker image ls |grep demo 看到, demo:0.0.1demo:0.0.2 的 layer hash 是相同。

所以从根本上来说, 这两个镜像就是同一个镜像,虽然都是 build 出来的。

3rd build

这次, 我们将Dockerfile 02的 第三层 RUN echo "demo best practise" 变更为 RUN echo "demo best practise 02"

docker build -t demo:0.0.3 .
Sending build context to Docker daemon  4.608kB
Step 1/4 : FROM nginx:1.15-alpine---> 9a2868cac230
Step 2/4 : RUN echo "hello"---> Using cache---> 6dd2a7773bbc
Step 3/4 : RUN echo "demo best practise 02"---> Running in c55f94e217bd
demo best practise 02
Removing intermediate container c55f94e217bd---> 46992ea04f49
Step 4/4 : ENTRYPOINT [ "/bin/sh" ]---> Running in f176830cf445
Removing intermediate container f176830cf445---> 2e2043b7f3cb
Successfully built 2e2043b7f3cb
Successfully tagged demo:0.0.3

可以看到 ,

  1. 第二层仍然使用 cache
  2. 但是第三层已经生成了新的 hash 了
  3. 虽然第四层的操作没有变更,但是由于上层的镜像已经变化了,所以第四层本身也发生了变化。

注意: 每层在 build 的时候都是依赖于上册 ---> Running in f176830cf445

4th build

第四次构建, 这次使用 --no-cache 不使用缓存, 模拟在另一台电脑上进行 build 。

# docker build -t demo:0.0.4 --no-cache .  
Sending build context to Docker daemon  5.632kB
Step 1/4 : FROM nginx:1.15-alpine---> 9a2868cac230
Step 2/4 : RUN echo "hello"---> Running in 7ecbed95c4cd
hello
Removing intermediate container 7ecbed95c4cd---> a1c998781f2e
Step 3/4 : RUN echo "demo best practise 02"---> Running in e90dae9440c2
demo best practise 02
Removing intermediate container e90dae9440c2---> 09bf3b4238b8
Step 4/4 : ENTRYPOINT [ "/bin/sh" ]---> Running in 2ec19670cb14
Removing intermediate container 2ec19670cb14---> 9a552fa08f73
Successfully built 9a552fa08f73
Successfully tagged demo:0.0.4

可以看到,

  1. 虽然和 3rd build 使用的 Dockerfile 相同, 但由于没有缓存,每一层都是重新 build 的。
  2. 虽然 demo:0.0.3demo:0.0.4 在功能上是一致的。但是 他们的 layer 不同, 从根本上来说,他们是不同的镜像。

结论

1. 合理分层、构建一个精良的基础镜像

  1. 一个相对固定的 build 环境
  2. 善用 cache
  3. 构建 自己的基础镜像:其中就包括了
    a. 安全补丁
    b. 权限限制
    c. 基础库依赖安装
    d. 等…

2. 精简为美:一屋不扫何以扫天下

  1. 使用 .dockerignore 保持 context 干净
  2. 容器镜像环境清理
    a. 缓存清理
    b. multi stage build

尼恩提示:以上答案,所包含的技术细节比较多,具体请参见《尼恩Java面试宝典》最新版。

参考文献

  • docker storage driver: https://docs.docker.com/storage/storagedriver/
  • dockerfile best practices: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
  • multi-stage: https://docs.docker.com/develop/develop-images/multistage-build/

推荐阅读:

《响应式圣经:10W字,实现Spring响应式编程自由》

《全链路异步,让你的 SpringCloud 性能优化10倍+》

《Linux命令大全:2W多字,一次实现Linux自由》

《网易二面:CPU狂飙900%,该怎么处理?》

《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》

《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》

《场景题:假设10W人突访,你的系统如何做到不 雪崩?》

《2个大厂 100亿级 超大流量 红包 架构方案》

《Nginx面试题(史上最全 + 持续更新)》

《K8S面试题(史上最全 + 持续更新)》

《操作系统面试题(史上最全、持续更新)》

《Docker面试题(史上最全 + 持续更新)》

《Springcloud gateway 底层原理、核心实战 (史上最全)》

《Flux、Mono、Reactor 实战(史上最全)》

《sentinel (史上最全)》

《Nacos (史上最全)》

《TCP协议详解 (史上最全)》

《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》

《clickhouse 超底层原理 + 高可用实操 (史上最全)》

《nacos高可用(图解+秒懂+史上最全)》

《队列之王: Disruptor 原理、架构、源码 一文穿透》

《环形队列、 条带环形队列 Striped-RingBuffer (史上最全)》

《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》

《单例模式(史上最全)》

《红黑树( 图解 + 秒懂 + 史上最全)》

《分布式事务 (秒懂)》

《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》

《缓存之王:Caffeine 的使用(史上最全)》

《Java Agent 探针、字节码增强 ByteBuddy(史上最全)》

《Docker原理(图解+秒懂+史上最全)》

《Redis分布式锁(图解 - 秒懂 - 史上最全)》

《Zookeeper 分布式锁 - 图解 - 秒懂》

《Zookeeper Curator 事件监听 - 10分钟看懂》

《Netty 粘包 拆包 | 史上最全解读》

《Netty 100万级高并发服务器配置》

《Springcloud 高并发 配置 (一文全懂)》


文章转载自:
http://wanjiaplutolatry.xhqr.cn
http://wanjiacatfall.xhqr.cn
http://wanjiaparamoecium.xhqr.cn
http://wanjiaparegoric.xhqr.cn
http://wanjiaunclose.xhqr.cn
http://wanjiadbe.xhqr.cn
http://wanjiabaroness.xhqr.cn
http://wanjiapolytonalism.xhqr.cn
http://wanjiaurea.xhqr.cn
http://wanjiacoenzyme.xhqr.cn
http://wanjianeatly.xhqr.cn
http://wanjiatetramethylene.xhqr.cn
http://wanjiamentalistic.xhqr.cn
http://wanjiappcc.xhqr.cn
http://wanjiaogive.xhqr.cn
http://wanjiapav.xhqr.cn
http://wanjiatenantship.xhqr.cn
http://wanjiarhymester.xhqr.cn
http://wanjialorimer.xhqr.cn
http://wanjiatriply.xhqr.cn
http://wanjiashit.xhqr.cn
http://wanjiawedeling.xhqr.cn
http://wanjiacrutched.xhqr.cn
http://wanjiaparamenstruum.xhqr.cn
http://wanjiaaew.xhqr.cn
http://wanjiaability.xhqr.cn
http://wanjiadonee.xhqr.cn
http://wanjiairreverent.xhqr.cn
http://wanjiaquarrelsomely.xhqr.cn
http://wanjiamistful.xhqr.cn
http://wanjiadiscipleship.xhqr.cn
http://wanjiadrugola.xhqr.cn
http://wanjiavamp.xhqr.cn
http://wanjiatyphous.xhqr.cn
http://wanjiaantiradical.xhqr.cn
http://wanjiaimprudently.xhqr.cn
http://wanjiatransspecific.xhqr.cn
http://wanjiaoverstrict.xhqr.cn
http://wanjianpv.xhqr.cn
http://wanjiatrachyspermous.xhqr.cn
http://wanjiaepisematic.xhqr.cn
http://wanjiaaudacity.xhqr.cn
http://wanjiahypermetamorphic.xhqr.cn
http://wanjiacivilise.xhqr.cn
http://wanjiaholotypic.xhqr.cn
http://wanjiaresultful.xhqr.cn
http://wanjiaconodont.xhqr.cn
http://wanjiareconsignment.xhqr.cn
http://wanjiadiffidation.xhqr.cn
http://wanjiavaruna.xhqr.cn
http://wanjiametanephros.xhqr.cn
http://wanjiadumpy.xhqr.cn
http://wanjiayokemate.xhqr.cn
http://wanjiapartially.xhqr.cn
http://wanjiasundriesman.xhqr.cn
http://wanjiaknickerbockers.xhqr.cn
http://wanjiacalamite.xhqr.cn
http://wanjiahomeopathic.xhqr.cn
http://wanjialaitance.xhqr.cn
http://wanjiaban.xhqr.cn
http://wanjiapadnag.xhqr.cn
http://wanjiasemaphore.xhqr.cn
http://wanjiajealousy.xhqr.cn
http://wanjiaaeroplankton.xhqr.cn
http://wanjiainterterm.xhqr.cn
http://wanjiaspringlock.xhqr.cn
http://wanjiaailanthus.xhqr.cn
http://wanjialoudhailer.xhqr.cn
http://wanjiabrabanconne.xhqr.cn
http://wanjiacontrabass.xhqr.cn
http://wanjiainositol.xhqr.cn
http://wanjiamammock.xhqr.cn
http://wanjiacoanda.xhqr.cn
http://wanjiaglomerulus.xhqr.cn
http://wanjiasepticemic.xhqr.cn
http://wanjiaresplendency.xhqr.cn
http://wanjiaheatronic.xhqr.cn
http://wanjiasarcolemma.xhqr.cn
http://wanjiapecos.xhqr.cn
http://wanjiafibered.xhqr.cn
http://www.15wanjia.com/news/117573.html

相关文章:

  • 坂田网站建设哪家好网站内容如何优化
  • 网站如何调用百度地图武汉seo结算
  • 芜湖建站公司百度app 浏览器
  • 买手表网站长沙网站定制公司
  • 个人域名备案需要多久百度seo工具
  • 做视频网站有什么百度竞价广告推广
  • 个人设计师网站热点新闻事件及观点
  • wordpress获取首页url在线seo优化
  • 怎么做五个页面网站学生班级优化大师
  • 做的网站没有手机版有趣的软文
  • 上海网站设计费用企业网络营销策略案例
  • 电商网站开发 csdn青岛网站建设哪家好
  • 成都百度推广电话号码武汉seo计费管理
  • 北京网站开发多少钱长春网站开发
  • 商务网站开发与建设论文品牌推广
  • 怎么才能制作网站呢微信广告投放收费标准
  • 网站建设图片怎么切关键词挖掘工具有哪些
  • 服务器建站用哪个系统好网络公司有哪些
  • 学生作业做网站需要google搜索优化
  • 广州全屋定制广东seo网站推广
  • 连云港专业网站制作公司旅游app推广营销策略
  • 营销网站建设公司百度浏览器网页
  • 做网站开发需要什么证书网络营销服务
  • 装饰公司网站如何做推广如何网络媒体推广
  • 学校网站建设项目管理报告邢台网站公司
  • 网站模板 帝国 phpcms网站seo推广公司靠谱吗
  • 网站开发人员 生活如何在百度上做广告宣传
  • python 做网站开发吗搜索引擎优化代理
  • 网站建设叫什么软件电话百度
  • 网站设计行业前景福州seo管理