Docker 的分层结构
基础层(Base Layer):
这是镜像的最底层,通常由 FROM 指令指定。例如,FROM ubuntu:20.04 会拉取 Ubuntu 20.04 的基础镜像作为第一层。
中间层(Intermediate Layers):
每一行 Dockerfile 指令(如 RUN、COPY、ADD 等)都会生成一个新的只读层。
这些中间层叠加在基础层之上,构成了完整的镜像。
镜像层(Image Layers):
基础层 + 中间层 = 镜像层。
镜像层是只读的,不可修改。
容器层(Container Layer):
当基于镜像启动容器时,Docker 会在镜像层之上添加一个可写层(Writable Layer),也称为容器层。
容器层是唯一的可写层,所有对容器的修改(如创建文件、修改配置等)都会记录在这一层。
公式
镜像层数 = 基础层(1 层) + 中间层(取决于 Dockerfile 指令数量)。
容器层数 = 镜像层数 + 1(容器层)。
示例
假设有一个 Dockerfile:
dockerfile
复制
FROM ubuntu:20.04 # 基础层(1 层)
RUN apt-get update # 中间层(1 层)
RUN apt-get install -y nginx # 中间层(1 层)
COPY app /app # 中间层(1 层)
CMD [“nginx”, “-g”, “daemon off;”] # 中间层(1 层)
镜像层数:
基础层:1 层。
中间层:4 层。
总镜像层数 = 1 + 4 = 5 层。
容器层数:
镜像层数:5 层。
容器层:1 层。
总容器层数 = 5 + 1 = 6 层。
总结
镜像层 = 基础层 + 中间层。
容器层 = 镜像层 + 1(可写层)。
标签:容器,基础,分层,层数,中间层,镜像,Docker,Dockerfile From: https://blog.csdn.net/qq_55046640/article/details/145303454