为什么apt-get update 要与apt-get install &&在一起_run apt-get update-程序员宅基地

技术标签: 入门(回炉重造)  运维  linux  docker  

看到很多 Dockerfile 都是把 apt-get update 和 apt-get install 写在同一个 RUN 指令中的

RUN apt-get update && apt-get install -y
package-bar
package-baz
package-foo

而不是

RUN apt-get update
RUN apt-get install -y
package-bar
package-baz
package-foo

只知道这样写在同一个 RUN 中会减少 layer 层,缩减构建镜像的大小.

但看到有一些文章提到,只有写在同一个 RUN 中才会对后面的 apt-get install 生效,却没有细说原因.

因此产生了一个疑惑,分开写也应该会对后面的 apt-get install 生效才对啊,因为镜像的构建是一层一层的,后面的层会基于前面的层.

也就是说,RUN apt-get update 会单独构建一层,并且会对后面 RUN apt-get install 的层产生作用才对.

分析

假设有一个这样的 Dockerfile

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y curl

构建镜像之后,所有的层都会在 Docker 的缓存中.

假设后来修改 apt-get install 添加额外的包

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y curl nginx

Docker 将初始和修改的指令视为相同,并会重用之前构建的缓存.

因此,不会执行 apt-get update,因为构建直接使用之前的缓存版本.

由于 apt-get update 没有运行,所以构建安装的 curl 和 nginx 包很可能是过时的版本.

所以,把 apt-get update 和 apt-get install 写在同一个 RUN 中以获取最新版本的包,而且还减少了 layer 层.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mmdsl083/article/details/126615119

智能推荐

Ubuntu远程连接MySQL_ubuntu 连接远程mysql-程序员宅基地

文章浏览阅读308次。Mysql 想要远程客户端链接,必须给root修改可以远程访问的权限一、在连接服务器后,操作mysql系统数据库mysql -u root -puse mysql;查询用户表命令:select User,authentication_string,Host from user这里也可以看出host默认都是localhost访问权限二、接下来就是最重要的部分了:..._ubuntu 连接远程mysql

graylog使用总结这一篇就够了-程序员宅基地

文章浏览阅读1.3w次,点赞38次,收藏70次。graylog使用 graylog报警配置 graylog接springboot graylog使用总结 graylog邮件通知_graylog

用python的opencv库打开ip摄像头_opencv打开ip摄像头 [tcp @ 0x5586bdf2cbc0] connection to-程序员宅基地

文章浏览阅读1.6k次。使用IP摄像头,需要在手机上下载一个网络摄像头app,之后在app上开启云服务,就可以把手机摄像头当做电脑的另外一个摄像头。下载支持网络摄像头的app首先下载任意款网络摄像头,我的手机是华为mate20,我下载的软件是IP摄像头。打开app后,点击开启云服务就会出现以下内容了这里出现192.168..:8080等字样,把手机作为摄像头。点击开启服务器运行如下代码:拿到192..._opencv打开ip摄像头 [tcp @ 0x5586bdf2cbc0] connection to

QT学习之QString的arg方法-程序员宅基地

文章浏览阅读217次。在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。在QT5的帮助文档中,可以看出以下几点:使用arg(str1, str2, str3)这种方法进行替换。使用arg(str1).arg(str2).arg(str3)这种方法进行替换。​使用arg(int,int,int)这种方式进行替换。..._qt qurl args

ubuntu16.04 安装ssh_ubuntu16.04重装ssh-程序员宅基地

文章浏览阅读2.2k次。安装sshroot@ubuntu: apt-get install openssh-server安装后需要启动sshroot@ubuntu: /etc/init.d/ssh restart允许root登录需要修改配置信息root@ubuntu: vi /etc/ssh/sshd_config修改为:修改保存后再重启sshroot@ubuntu: /etc/init.d..._ubuntu16.04重装ssh

关于Unity中红外线瞄准的效果实现-程序员宅基地

文章浏览阅读1.1k次。今天做一个FPS游戏的时候,由于我做的是第三人称的射击,所以需要一个枪的红外线瞄准的效果。一开始我在枪上挂一个很细很长的聚光灯,瞄准远处物体的时候,看起来有点红外线的样子,但是靠近之后光线就变成一个手电筒的那种光,不是我想要的效果。后来我用粒子特效,虽然远处近处都是一条射线,但是效果很粗糙,不是那种细细的有穿透的感觉,而是像激光一样,而且感觉不断生成粒子,性能消耗会很大。最后..._unity红外线效果

随便推点

Android Jetpack Compose Paging+SwipeRefresh实现分页和下拉刷新_android的paging和jetpackcompose-程序员宅基地

文章浏览阅读404次。implementation (“androidx.paging:paging-compose:1.0.0-alpha08”)implementation (“com.google.accompanist:accompanist-swiperefresh:0.9.0”)定义Item内容非常简单的一个标题和内容data class Content(val title:String,val content: String)定义RetrofitServiceinterface RetrofitServ_android的paging和jetpackcompose

mysql8.0忘记root密码后重置_mysql忘记root密码8.0以后-程序员宅基地

文章浏览阅读163次。mysql8.0版本较之前版本有些命令上变化,解决这个问题的方法是如下:1、以管理员身份运行cmd窗口,输入命令mysqld --shared-memory --skip-grant-tables2、新开一个cmd窗口,直接运行mysql,依次执行FLUSH PRIVILEGES(注意命令的结尾加分号),再使用ALTER USER 'root'@'localhost' IDEN..._mysql忘记root密码8.0以后

十大经典算法图解(详细版)-程序员宅基地

文章浏览阅读3.2k次。希尔排序的思想是采用插入排序的方法,先让数组中任意间隔为 h 的元素有序,刚开始 h 的大小可以是 h = n / 2,接着让 h = n / 4,让 h 一直缩小,当 h = 1 时,也就是此时数组中任意间隔为1的元素有序,此时的数组就是有序的了。从中轴元素那里开始把大的数组切割成两个小的数组(两个数组都不包含中轴元素),接着我们通过递归的方式,让中轴元素左边的数组和右边的数组也重复同样的操作,直到数组的大小为1,此时每个元素都处于有序的位置。由于两个小的数组都是有序的,所以在合并的时候是很快的。_算法图解

研发主管接私活被辞退,法院判决公司赔偿20.7万元_接私活赔偿案例-程序员宅基地

文章浏览阅读1.4w次,点赞19次,收藏52次。2019年8月15日,因员工李某在合资公司接私活,九次方大数据信息集团有限公司(以下简称:九次方公司)将其开除,被法院判定赔偿李某20.7万元,双方在违法解除劳动合同赔偿金存争议,经二审判决,驳回九次方上诉请求,维持原判。12月2日,中国裁判文书网公布了这起劳动争议的民事判决书。图源:中国裁判文书网接私活应不应该被公司开除?从法院公布的文书中,我们理清了事件的来龙去脉。原、被告主张九次方公司向一审法院起诉请求:判令九次方公司无须向李某支付违法解除劳动合同赔偿金20.7万元。_接私活赔偿案例

react native识别html5,GitHub - soliury/react-native-html-render: A html render for react-native-程序员宅基地

文章浏览阅读117次。react-native-html-renderA html render for react-native. But don't Suitable for all html. Only Suitable for the html generator by markdown with minify.Now it used by Noder.Be careful to use, the perfor..._react native render html 阅读器

MindOpt——优化虚拟电厂智能调度问题(二)-程序员宅基地

文章浏览阅读449次。智慧楼宇调度,是在保证社区负荷需求的情况下,通过储能设备的指令控制,以**用电经济性、环保性和对电网稳定性**为综合目标的一种调度场景。_mindopt

推荐文章

热门文章

相关标签