【Docker】Dockerfile 指令对 Docker 镜像层数的影响

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

| 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 |


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【K8s】专题十四(1):Kubernetes 安全机制之 RBAC


目录

一、背景介绍

二、演示过程

1、非精简指令构建镜像

2、精简指令构建镜像

三、写在最后


一、背景介绍

【Docker】专题三:Dockerfile 相关 中提到,Dockerfile 中的部分指令(如 RUN、COPY、ADD)在构建 Docker 镜像时会增加镜像的层数。本文将以 RUN 指令为例,进一步演示和分析其对 Docker 镜像层数的影响效果。


二、演示过程
1、非精简指令构建镜像
  • Dockerfile-1 文件内容如下
# 指定基础镜像
FROM alpine# 指定 RUN 指令(两条命令,分别实现创建文件、删除文件)
RUN echo "This is demo_content" > /tmp/1.txt
RUN rm -rf /tmp/1.txt
  • 构建 Docker 镜像
docker build -t alpine:demo-1 -f Dockerfile-1 . 
  • 查看 Docker 镜像分层信息
docker history alpine:demo-1 --no-trunc

  • 查看 Docker 镜像分层 ID
    • 如图,该镜像有三个 layer 分层
      • 第一个分层:表示基础镜像
      • 第二个分层:对应第一条 RUN 指令,我们记录该镜像分层的 ID
      • 第三个分层:对应第二条 RUN 指令
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
dive alpine:demo-1

  • 查看 Docker 镜像分层文件
# 将 Docker 镜像保存为 tar 文件
docker save alpine:demo-1 -o demo-1.tar# 查看 tar 文件内容
tar -xf demo-1.tar
cd 0e5986017b9df1a7163da7e70a44e72d951ddfebaf2b157eddcf00439bc76ebb
tar -xf layer.tar
cat tmp/1.txt

🔔 从图中可以看到,虽然镜像第三层对应的 RUN 指令删除了 1.txt 文件,但实际上该文件仍存在于镜像的第二层中,会占用镜像分层和本地空间

2、精简指令构建镜像
  • Dockerfile-2 文件内容如下
# 指定基础镜像
FROM alpine# 指定 RUN 指令(一条命令,实现创建文件、删除文件)
RUN echo "This is demo_content" > /tmp/1.txt && rm -rf /tmp/1.txt
  • 构建 Docker 镜像
docker build -t alpine:demo-2 -f Dockerfile-2 . 
  • 查看 Docker 镜像分层信息
docker history alpine:demo-2 --no-trunc

  • 查看 Docker 镜像分层 ID
    • 如图,该镜像有两个 layer 分层
      • 第一个分层:表示基础镜像
      • 第二个分层:对应 RUN 指令,我们记录该镜像分层的 ID
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
dive alpine:demo-2

  • 查看 Docker 镜像分层文件
# 将 Docker 镜像保存为 tar 文件
docker save alpine:demo-2 -o demo-2.tar# 查看 tar 文件内容
tar -xf demo-2.tar
cd 29baf2909e7a6a240ac1bb6e4bccd581a112a4a7e364a7f2b1f556fb0f652387
tar -xf layer.tar
cat tmp/1.txt

🔔 从图中可以看到,镜像第二层对应的 RUN 指令删除了 1.txt 文件,镜像的第二层中确实已经不存在该文件,不会占用镜像分层和本地空间


三、写在最后

通过演示可知,使用精简指令确实可以有效减少不必要的镜像层数和过程文件。

为了实现 Dockerfile 的最佳实践,建议在 Dockerfile 中尽量使用 && 符号,将相关命令组合成单个 RUN 指令,以最大限度减少 RUN 指令数量和镜像层数,同理也要减少 COPY、ADD 指令的数量。这对于控制 Docker 镜像的大小、提高镜像构建和部署效率,以及通过避免创建可能包含敏感或冗余数据的不必要层来增强安全性至关重要。

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

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

相关文章

数据分析-38-关于互联网企业黑名单的探索

论文辅导或算法学习可以滴滴我 文章目录 项目介绍表和字典描述1、读取数据2、查看黑名单公司主要来自哪些城市3、查看黑榜公司分布城市4、存在的问题5、查看存在问题分类 项目介绍 在数字化的时代,信息的力量不言而喻,尤其当我们面临职业选择时。是一个…

linux系统运维面试题(一)(Linux System Operations Interview Questions I))

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

elementui分页功能(当后端将所有数据全部返回,由前端处理)

摘要: 实现数据导入的时候,后端会返回上传成功数量、更新成功数量、更新失败数量、以及更新失败的原因,但是数据是全部返回来的,所以封装了一个组件了提示,但是数据多的时候会太长了,所以使用table了模拟分…

【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python计算小球 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算小球 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…

MUX VLAN 实验配置

MUX VLAN(Multiplex VLAN)是一种高级的VLAN技术,通过在交换机上实现二层流量隔离和灵活的网络资源控制,提供了一种更为细致的网络管理方式 MUX VLAN通过定义主VLAN(Principal VLAN)和多个子VLAN&#xff0…

怎么把pdf文档保存成图片格式

有时候我们会碰到只支持图片上传的场景,如何编程快速将pdf转成图片呢? 可以使用 Python 的 pdf2image 库仅10行代码就能将 PDF 文档保存为图片格式。如果 PDF 文档包含多页,则每一页可以保存为单独的图片。以下是实现该功能的步骤&#xff1…

(52)MATLAB仿真说明迫零均衡器的缺点

文章目录 前言一、迫零均衡器的缺点分析二、仿真分析迫零均衡器带来的噪声增强三、仿真结果画图四、信道均衡的MMSE准则 前言 本文从迫零均衡器的设计准则出发,分析了其设计思想和存在的问题。在此基础上给出了MATLAB评估源代码,并运行得到仿真评估结果…

工业互联网平台赋能制造业数字化转型方案(55页PPT)

方案介绍: 本方案旨在通过工业互联网平台,为制造业提供一站式的数字化转型解决方案。平台将集成物联网、云计算、大数据、人工智能等先进技术,实现对生产设备、制造过程、供应链等各个环节的全面数字化管理。通过实施本方案,制造…

《使用Gin框架构建分布式应用》阅读笔记:p234-p250

《用Gin框架构建分布式应用》学习第13天,p234-p250总结,总17页。 一、技术总结 1.message broker (1)RabbitMQ 书里使用的是RabbitMQ(https://www.rabbitmq.com/),这里补充一点说明: docker run -d --name rabbitmq -p 5672:…

美畅物联丨视频上云网关如何配置上级联网云平台

在当今的智慧交通与安防监控体系中,视频上云网关发挥着至关重要的作用。以美畅视频上云网关为例,具备强大的兼容性,能够对接来自不同厂家、不同型号的视频设备,将这些设备输出的各异视频流进行汇聚整合。在获取摄像机视频流后&…

进阶 | Prometheus+Grafana 普罗米修斯

一、Prometheus服务部署 Prometheus服务部署以及关联node节点数据,详情看:入门 | PrometheusGrafana 普罗米修斯-CSDN博客 二、Prometheus验证node节点监控数据 1、修改prometheus server配置 vim /usr/local/prometheus/conf/prometheus.yml 重启服…

一个简单的 uas_send_bye.xml for SIPp

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd"> <scenario name"iinv-o200-obye.xml -- wjd 2014"><recv request"INVITE" rrs"true"/><send>&l…

【10天速通Navigation2】(四) :ORB-SLAM3的ROS2 humble编译和配置

前言 往期内容&#xff1a; 第一期&#xff1a;【10天速通Navigation2】(一) 框架总览和概念解释第二期&#xff1a;【10天速通Navigation2】(二) &#xff1a;ROS2gazebo阿克曼小车模型搭建-gazebo_ackermann_drive等插件的配置和说明第三期&#xff1a;【10天速通Navigation…

回溯算法习题其二-Java【力扣】【算法学习day.16】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…

【Java小白图文教程】-05-数组和排序算法详解

精品专题&#xff1a; 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

论文概览 |《Computers, Environment and Urban Systems》2024.10 Vol.113

本次给大家整理的是《Computers, Environment and Urban Systems》杂志2024年10月第113期的论文的题目和摘要&#xff0c;一共包括13篇SCI论文&#xff01; 论文1 Can consumer big data reveal often-overlooked urban poverty? Evidence from Guangzhou, China 消费者大数…

百度SEO中的关键词密度与内容优化研究【百度SEO专家】

大家好&#xff0c;我是百度SEO专家&#xff08;林汉文&#xff09;&#xff0c;在百度SEO优化中&#xff0c;关键词密度和关键词内容的优化对提升页面排名至关重要。关键词的合理布局与内容的质量是确保网页在百度搜索结果中脱颖而出的关键因素。下面我们将从关键词密度和关键…

通俗易懂的餐厅例子来讲解JVM

餐厅版本 JVM&#xff08;Java虚拟机&#xff09;可以想象成一个虚拟的计算机&#xff0c;它能够运行Java程序。为了让你更容易理解&#xff0c;我们可以用一个餐厅的比喻来解释JVM&#xff1a; 菜单&#xff08;Java源代码&#xff09;&#xff1a; 想象一下&#xff0c;Java…

BLFAasia2025广州国际酒饮料制造设备及液态加工技术展览会(广州酒饮料液态加工技术展)

Asia Beer and Beverage Technology and Liquid Food Processing Equipment Exhibition BLFAasia2025广州国际酒饮料制造设备及液态加工技术展览会&#xff08;以下简称&#xff1a;“BLFAasia”&#xff09;展会于2025年8月22-24日在粤港澳大湾区核心城市广州隆重举行。是专注…

自动驾驶-传感器简述

自动驾驶车辆上的传感器类型包含激光雷达、毫米波雷达、相机、imu、rtk、超声波雷达等&#xff0c;这些传感器用来接收外部世界多姿多彩的信号&#xff0c;根据接收到的信号&#xff0c;车载大脑对信号进行处理&#xff0c;那信号的准确程度就尤为重要。 本文将各个传感器的特性…