发布时间:2020-02-12 12:00:03来源:阅读:
使用–no-cache构建镜像大多情况下足够解决由于缓存引起的问题。不过有时候你想要一个更细粒度的解决方案。例如你构建的镜像需要时间比较长,你仍然想一些步骤使用缓存,然后从指定的点开始不使用缓存重新运行命令构建镜像。
你想在构建镜像时设置从Dockerfile的指定位置开始使缓存失效。
在命令的后面添加注释来使缓存失效。
例如我们在以下的Dockerfile中的CMD命令后添加注释以让缓存从这里失效:
FROM node MAINTAINER ian.miell@gmail.com RUN git clone http://github.com/docker-in-practice/todo.git WORKDIR todo RUN npm install RUN chmod -R 777 /todo EXPOSE 8000 CMD ["npm","start"] #bust the cache
输出为:
$ docker build . Sending build context to Docker daemon 2.56 kB Sending build context to Docker daemon Step 0 : FROM node ---> 91cbcf796c2c Step 1 : MAINTAINER ian.miell@gmail.com ---> Using cache A “normal” docker build ---> 8f5a8a3d9240 Step 2 : RUN git clone -q http://github.com/docker-in-practice/todo.git ---> Using cache ---> 48db97331aa2 Step 3 : WORKDIR todo ---> Using cache ---> c5c85db751d6 Step 4 : RUN npm install ---> Using cache ---> be943c45c55b Step 5 : EXPOSE 8000 ---> Using cache ---> 805b18d28a65 Step 6 : CMD ["npm","start"] #bust the cache ---> Running in fc6c4cd487ce ---> d66d9572115e Removing intermediate container fc6c4cd487ce Successfully built d66d9572115e
从输出你会看到在第6步已经不使用缓存了,而之前的步骤仍使用缓存,这既缩短了构建镜像的时间,又能解决缓存可能引起的问题。
这个技巧工作的原因是我们在命令后添加了非空字符,所以Docker认为这是一个新的命令,也就不使用缓存了。
你会好奇如果我们更改的是第4步命令RUN npm install,那后面的第5步第6步还会使用缓存吗?答案是从更改的第4步开始下面的就不能使用缓存了。所以由于这个原因,建议尽可能的把一些不常需要变更的命令往上移。
liveprofessor汉化版 (声音VST机架插件设置软件)2.4.3
157MB
软媒设置大师绿色版 v3.7.1.0 最新版
671KB
360点睛推广客户端下载
12.2M
defpix屏幕坏点检测工具官方版下载v1.3
761 KB
一点通送货单打印软件下载
18M
冰点还原精灵卸载下载
15.6M
圆点校园广播系统 v1.1.2 官方版
22.75M
多点相册
14.6M
小鹿点睛助手(360点睛营销推广软件) v1.3.110.953 最新版
23.5M
快译点企业版下载
317MB
电脑报时(电脑整点报时工具) V1.1 免费版
1.97 MB
绿点鼠标自动点击器(鼠标自动点击工具) 3.20 中文版
2.34MB
美萍vod点播系统下载
3.1M
腾讯企点
89.2M
AKVIS Points下载
229.6M
deadpixeltest下载
167.16KB
deadpixeltest下载
0.16MB
fancycache下载
1.57MB
videocacheview下载
104.9K
2020-03-18
gitlab数据的备份及恢复方法
centos7安装配置squid正向代理
联想智能电视与其它有线电视、数字电视有什么区别?
Apache mod_alias设置路径别名
迁移wordpress到docker容器
如何实现打开IE窗口默认最大化状态?
使用Docker搭建 Java Web运行环境
Win7系统下如何使用无线建立临时网络
Win7如何关闭网卡、USB节电