• 12-镜像的缓存特性


    Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建。

    举例说明。
    在前面的 Dockerfile 中添加一点新内容,往镜像中复制一个文件:

    root@ubuntu:~# ls           ①

    Dockerfile  testfile

    root@ubuntu:~#

    root@ubuntu:~# docker build -t ubuntu-with-vi-dockerfile-2 .

    Sending build context to Docker daemon 32.77 kB

    Step 1 : FROM ubuntu

     ---> f753707788c5

    Step 2 : RUN apt-get update && apt-get install -y vim

     ---> Using cache         ②

     ---> 35ca89798937

    Step 3 : COPY testfile /          ③

     ---> 8d02784a78f4

    Removing intermediate container bf2b4040f4e9

    Successfully built 8d02784a78f4


    ① 确保 testfile 已存在。

    ② 重点在这里:之前已经运行过相同的 RUN 指令,这次直接使用缓存中的镜像层 35ca89798937。

    ③ 执行 COPY 指令。
    其过程是启动临时容器,复制 testfile,提交新的镜像层 8d02784a78f4,删除临时容器。

    在 ubuntu-with-vi-dockerfile 镜像上直接添加一层就得到了新的镜像 ubuntu-with-vi-dockerfile-2。

    如果我们希望在构建镜像时不使用缓存,可以在 docker build 命令中加上 --no-cache 参数。

    Dockerfile 中每一个指令都会创建一个镜像层,上层是依赖于下层的。无论什么时候,只要某一层发生变化,其上面所有层的缓存都会失效。

    也就是说,如果我们改变 Dockerfile 指令的执行顺序,或者修改或添加指令,都会使缓存失效。

    除了构建时使用缓存,Docker 在下载镜像时也会使用。

  • 相关阅读:
    hadoop2 作业执行过程之作业提交
    Hadoop各个服务端口列表
    基于 Nginx 和 FFmpeg 搭建流媒体服务器
    prometheus
    ubuntu 下dbus的环境搭建和使用
    Hadoop-Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster —
    Exception message: /bin/bash: line 0: fg: no job control
    P3942 将军令 [贪心]
    P3941 入阵曲
    P3941 入阵曲
  • 原文地址:https://www.cnblogs.com/mkxfs/p/10148243.html
Copyright © 2020-2023  润新知