11.docker镜像分层dockerfile优化

docker镜像的分层(kvm 链接克隆,写时复制的特性)

镜像分层的好处:复用,节省磁盘空间,相同的内容只需加载一份到内存。
修改dockerfile之后,再次构建速度快
分层:就是在原有的基础镜像上新增了服务或者软件,也就是文件发生了大小变化。
例如,底层centos6.9,在这上新增nginx,在安装php;
在这里插入图片描述

通过镜像查看历史命令就能看出kod:v2镜像的大小变化有10层;注:下图基于基础镜像centos6.9就是一层
因为每一次构建镜像的时候都会起一个临时容器ID,执行下一个容器便会删除上一个容器ID,依次类推。
在这里插入图片描述

镜像历史命令能看构建10层,也就是对应dockerfile脚本里面的发生文件大小变化的10条命令;
在这里插入图片描述

我将kod:v2镜像导出,然后删除kod:v2镜像,然后在导入,就可以清晰可见的层数
注释:由于centos6.9镜像已经存在,所以就直接复用了,就不会显示层数。
在这里插入图片描述

导入镜像,这里显示7层,正常来说应该是10层,因为这里有3层是在镜像中已经存在的,所以被直接复用。
注释:layer意思为:层
在这里插入图片描述

从上面的结论可以得出,也就是构建脚本中的指令RUN越多层数就很多。下图所示
注释:docker镜像中分层限制最大128层。层数越多加载就越慢,所以越少越好
在这里插入图片描述

dockerfile自动构建优化

dockerfile脚本优化:
1:尽可能选择体积小linux,如alpine(5M左右)
2:尽可能合并RUN指令,清理无用的文件(yum缓存,源码包)
3:修改dockerfile,把变化的内容尽可能放在dockerfile结尾
4: 使用.dockerignore,减少不必要的文件ADD . /html

根据上面几条优化规则,将kod服务构建的dockerfile脚本进行优化操作

[root@yunlong /data/dockerfile/kod]# cat dockerfile  
#!/bin/bash
FROM centos:6.9
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo && \
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-archive-6.repo && \
yum install  nginx php-fpm php-gd php-mbstring unzip -y && \
yum clean all 
ADD kodexplorer4.40.zip /opt/
RUN cd /opt/ && \
unzip kodexplorer4.40.zip && \
rm -rf kodexplorer4.40.zip && \ 
chown -R nginx:nginx .
ADD nginx.conf /etc/nginx/nginx.conf
ADD www.conf /etc/php-fpm.d/www.conf
ADD init.sh /init.sh
CMD ["/bin/bash","/init.sh"]

重新构建镜像

docker build --network=host -t kod:v3 .

查看镜像比之前kodv2小了162M
在这里插入图片描述

导出镜像查看,kod:v3小了156M
在这里插入图片描述

在查看镜像历史命令显示kod:v2是10层,kod:v3则为7层。
在这里插入图片描述

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

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

相关文章

Thinkphp校园新闻发布系统源码 毕业设计项目实例

Thinkphp校园新闻发布系统源码 毕业设计项目实例 校园新闻发布系统模块: 用户模块:注册,登陆,查看个人信息,修改个人信息,站内搜索,新闻浏览等功能, 后台管理员模块:会员…

翻转数位00

题目链接 翻转数位 题目描述 注意点 可以将一个数位从0变为1找出能够获得的最长的一串1的长度(必须是连续的) 解答思路 参照题解使用动态规划解决本题,对于任意一个位置i,dp[i][0]表示到达且包含第i位不翻转0最长1的长度&…

每天一个数据分析题(三百五十九)- 多维分析模型

图中是某公司记录销售情况相关的表建立好的多维分析模型,请根据模型回答以下问题: 2)产品表左连接品牌表的对应关系属于? A. 一对多 B. 一对一 C. 多对一 D. 多对多 数据分析认证考试介绍:点击进入 题目来源于CD…

等待 chrome.storage.local.get() 完成

chrome.storage.local.get() 获取存储处理并计数,内部计数正常,外部使用始终为0,百思不得其解。 如何在继续执行之前等待异步chrome.storage.local.get()完成-腾讯云开发者社区-腾讯云 (tencent.com) 原来我忽略了异步问题,最简…

推荐常用的三款源代码防泄密软件

三款源代码防泄密软件——安秉源代码加密、Virbox Protector 和 MapoLicensor——确实各自在源代码保护的不同方面有其专长。这些软件可以满足企业对于源代码保护的三大需求:防止泄露、防止反编译和防止破解。 安秉源代码加密: 专注于源代码文件的加密&…

【每天学会一个渗透测试工具】Nessus安装及使用指南

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 其他扫描工具: AWVS和Xray:应用漏洞扫描工具 fscan:虽然能扫主机,但比较老了…

【教学类-64-02】20240610色块眼力挑战(二)-2-25宫格色差10-100(10倍)(星火讯飞)

背景需求 以下的色块眼里挑战需要人工筛选图片,非常繁琐。 【教学类-64-01】20240607色块眼力挑战(一)-0-255随机底色-CSDN博客文章浏览阅读446次,点赞12次,收藏5次。【教学类-64-01】20240607色块眼力挑战&#xff…

Playwright工作原理

执行test时,有哪些关键步骤 当我们用Playwright编写一段简单的test script,代码如下所示:在test case中第一段代码就是await page.goto(xxxxx) import { test, expect } from playwright/test;test(test, async ({ page }) > {await page…

【Windows】配置Flutter开发环境

一、下载 flutter sdk 点此跳至下载官网 下载好flutter sdk,并解压到自定义的位置。 二、配置环境变量 此电脑 --> 右键 选择 属性 --> 点击 高级系统设置 --> 会弹出系统属性的窗口,点击 环境变量 按钮 1.配置加速镜像地址 PUB_HOSTED_…

为啥找对象千万别找大厂男,还好我不是大厂的。。

网上看到一大厂女员工发文说:找对象千万别找大厂男,理由说了一大堆,无非就是大厂男为了逃避带娃,以加班为由宁愿在工位上玩游戏也不愿回家。当然这种观点有的人赞同有的人反对。 网友精彩评论: --------------下面是今…

Python武器库开发-武器库篇之链接提取器(六十)

Python武器库开发-武器库篇之链接提取器(六十) 链接提取器介绍 链接提取器(Link Extractor)是一种用于从网页中提取链接的工具。它可以从网页的源代码中识别出所有的链接,并将这些链接提取出来。链接提取器可以用于各…

Maya 白膜渲染简单教程

零基础渲染小白,没关系,一篇超简单教程带你学会渲染白膜。 先打开Maya,看看面板有没有渲染器,这里以Arnold为主。 要是没有这个,就去找插件管理器, Arnold的是mtoa,在搜索栏搜,然后把…

打造精致UI界面:字体设计的妙招

字体设计是UI设计的关键模块之一。字体设计是否有效可能直接实现或破坏整个UI界面。那么,界面设计的字体设计有哪些规范呢?如何设计细节字体?本文将解释字体设计规范的可读性、可读性和可用性,并介绍UI界面中的字体设计技巧。 如…

02-ES6新语法

1. ES6 Proxy与Reflect 1.1 概述 Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。 Proxy 可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理。它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,…

功能测试的内容与目的是什么?

在软件开发与测试过程中,功能测试是不可或缺的关键步骤,它主要关注软件产品是否能够按照设计规格和用户需求实现预定的功能。功能测试的内容与目的,简单来讲,就是验证软件的各种特性和功能是否正确、完整且符合预期,确…

docker 中 File Sharing 和Volumes 的区别

在 Docker 中,File Sharing 和 Volumes 都涉及到将文件和目录从主机系统映射到容器中,但它们的用途和实现方式有一些重要的区别: 一、简介 File Sharing 是 Docker Desktop 在 Windows 和 macOS 上的一项功能,允许你将主机文件系…

API-操作元素内容

学习目标: 掌握操作元素内容 学习内容: 操作元素内容元素innerText属性元素innerHTML属性案例 操作元素内容: DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象。就是操作对象使用的点语法。如果想要修…

开源的数字孪生平台

欧洲对工业4.0的追求体现在三个方面: 数字孪生、智能制造和万物互联。 资助2440万欧元的开源数字孪生平台 源代码: http://www.gitpp.com/ccdan/dpqq-digital-twins 这套数字孪生是工业4.0整体规划中的中的一项技术,实现了一种称为“数字…

正则表达式常用表示

视频教程:10分钟快速掌握正则表达式 正则表达式在线测试工具(亲测好用):测试工具 正则表达式常用表示 限定符 a*:a出现0次或多次a:a出现1次或多次a?:a出现0次或1次a{6}:a出现6次a…

UE4_材质_雨滴涟漪效果ripple effect_ben教程

学习笔记,不喜勿喷!侵权立删,祝愿生活越来越好! 雨水落下时会产生这些非常漂亮的同心环波纹,我们要做的第一件事是创建一个单个的圆环遮罩动画,我们希望环在开始的时候在中心很小,然后放大&…