背景:
    构建一个build env的docker image,由于一些命令上的错误导致重复中断了许多次,而我每次都从头开始构建镜像,非常浪费时间。
    偶然间调用docker images发现了如下信息:

    1. user@user:~$ docker images
    2. REPOSITORY TAG IMAGE ID CREATED SIZE
    3. <none> <none> 07e7320fbda9 16 minutes ago 2.27GB
    4. <none> <none> 2d517689d4bc 5 hours ago 1.68GB

    出现了几个未命名的镜像。
    这个是不是我之前构建时产生的缓存?或者说中间产品:即不是我完整期望的镜像,但是已经安装了一部分内容?
    搜索相关资料之后确实如此,因此我们应该可以基于这些未命名的镜像继续进行构建。
    参考资料:https://tuxknight-notes.readthedocs.io/en/latest/docker/dockerfile_best_practices_take.html

    方法:
    想引用这些上一次构建镜像“缓存”时,使用下述指令:

    1. docker build --cache-from "ImageID" "DockerfileRoute"

    即 “—cache-from ImageID”将目前本地存在的上一次image build的缓存调用出来继续构建。
    Notice:
    这种情况下,是引用这个镜像继续构建,最终会把这个引用的缓存镜像覆盖掉,生成新的镜像。

    背景2:
    如果我只是想引用某个存在的镜像,去构建一个新的镜像而且不覆盖原引用镜像呢?

    方法:
    更改Dockerfile的第一行,
    比如引用的Docker镜像中的一行:

    1. FROM ubuntu:20.04 as baseenv
    2. SHELL [ "/bin/bash", "-o", "pipefail", "-o", "xtrace", "-c"]

    我们把第一行更改为:

    1. FROM “你需要引用的Image ID

    然后重新docker build这个Dockerfile即可。