• Docker镜像是由多个只读层叠加在一起构成的。每个镜像层包含了文件系统的一部分。
    • 每一层代表一次镜像构建过程中的操作(例如一次 RUNCOPYADD 指令)。这些层是不可变的,这意味着一旦创建,它们不会被更改。每一层都依赖于前一层,并在前一层的基础上进行修改。
  • Docker镜像只保存所有层的引用, 所有镜像的层都实际保存在宿主机上
    • 所以层可以被不同的镜像复用

适用性

镜像分层的好处:

  • 节省存储空间:相同的层可以被多个镜像复用,避免了重复存储相同的数据。
  • 提高构建效率:在构建新镜像时,如果前面的层没有变化,Docker 会利用缓存而不重新构建,从而加速构建过程。

容器分层的特点:

  • 分离读写层:基础镜像的层是只读的,确保了镜像的一致性和稳定性。而容器层是可写的,用户可以在这个层上进行各种操作。
  • 一次性变化:当容器被删除时,这个可写层也会被删除,因此在容器中对文件系统的更改不会影响原始的镜像。

容器的分层结构

容器是镜像的运行实例,当启动容器时,Docker 会在镜像的基础上添加一个可写层(read-write layer),即容器层。所有在容器中进行的文件操作(如新增、修改、删除)都发生在这个可写层中。