Refine Docker concepts

This commit is contained in:
yeasy
2026-04-21 14:39:41 -07:00
parent b3d1508310
commit 4b93651989
5 changed files with 29 additions and 41 deletions
+11 -10
View File
@@ -82,24 +82,24 @@ flowchart TD
#### 分层是如何工作的
笔者用一个实际 Dockerfile 来解释分层
笔者用一个更贴近最佳实践 Dockerfile 来解释分层
```docker
FROM ubuntu:24.04 # 第 1 层:基础系统(约 78MB)
RUN apt-get update # 第 2 层:更新索引
RUN apt-get install nginx # 第 3 层:安装 nginx
COPY app.conf /etc/nginx/ # 第 4 层:复制配置文件
FROM ubuntu:24.04 # 第 1 层:基础系统(约 78MB)
RUN apt-get update && apt-get install -y nginx # 第 2 层:更新索引并安装 nginx
COPY app.conf /etc/nginx/ # 第 3 层:复制配置文件
```
这里特意把 `apt-get update` `apt-get install` 放在同一个 `RUN` 避免构建缓存导致包索引过期
构建后的镜像结构
```mermaid
flowchart TD
Layer4["第 4 层: COPY app.conf (只读)<br/>← 最新添加的层"]
Layer3["第 3 层: nginx 安装文件 (只读)"]
Layer2["第 2 层: apt 缓存更新 (只读)"]
Layer3["第 3 层: COPY app.conf (只读)<br/>← 最新添加的层"]
Layer2["第 2 层: nginx 安装文件与包索引 (只读)"]
Layer1["第 1 层: Ubuntu 基础系统 (只读)<br/>← 基础镜像层"]
Layer4 --> Layer3 --> Layer2 --> Layer1
Layer3 --> Layer2 --> Layer1
```
每一层的特点
@@ -137,7 +137,7 @@ RUN apt-get update && \
```
### 2.1.5 查看镜像的分层
### 2.1.5 查看镜像的构建历史
```bash
## 查看镜像的历史(每层的构建记录)
@@ -152,6 +152,7 @@ a6bd71f48f68 2 weeks ago CMD ["nginx" "-g" "daemon off;"] 0B
<missing> 2 weeks ago COPY 30-tune-worker-processes.sh /docker-ent… 4.62kB
...
```
需要注意`docker history` 展示的是镜像的构建历史 `CMD``ENTRYPOINT``EXPOSE``STOPSIGNAL` 这类 `0B` 项主要是镜像配置元数据并不等同于新增了可见的文件系统内容真正占用空间的通常是 `RUN``COPY``ADD` 等带来的文件变化
### 2.1.6 镜像的标识