mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 20:31:18 +00:00
style: apply global formatting fixes (struct, spacing, zhlint)
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
## 14.4 联合文件系统
|
||||
|
||||
联合文件系统(UnionFS)是 Docker 镜像分层存储的基础,它允许将多个目录挂载为同一个虚拟文件系统。
|
||||
联合文件系统 (UnionFS) 是 Docker 镜像分层存储的基础,它允许将多个目录挂载为同一个虚拟文件系统。
|
||||
|
||||
### 什么是联合文件系统
|
||||
|
||||
联合文件系统(UnionFS)是一种**分层、轻量级**的文件系统,它将多个目录"联合"挂载到同一个虚拟目录,形成一个统一的文件系统视图。
|
||||
联合文件系统 (UnionFS) 是一种**分层、轻量级**的文件系统,它将多个目录 “联合” 挂载到同一个虚拟目录,形成一个统一的文件系统视图。
|
||||
|
||||
> **核心思想**:将多个只读层叠加,最上层可写,形成完整的文件系统。
|
||||
|
||||
@@ -28,7 +28,9 @@ flowchart TD
|
||||
|
||||
Docker 选择联合文件系统作为其存储驱动,主要基于以下几个核心优势。
|
||||
|
||||
#### 1. 镜像分层复用
|
||||
#### 1。镜像分层复用
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
@@ -38,7 +40,7 @@ flowchart TD
|
||||
|
||||
多个镜像共享相同的底层,节省磁盘空间。
|
||||
|
||||
#### 2. 快速构建
|
||||
#### 2。快速构建
|
||||
|
||||
每个 Dockerfile 指令创建一层,只有变化的层需要重建:
|
||||
|
||||
@@ -49,9 +51,9 @@ RUN npm install # 层3:安装依赖
|
||||
COPY . . # 层4:应用代码
|
||||
```
|
||||
|
||||
代码变化时,只需重建层4,层1-3 使用缓存。
|
||||
代码变化时,只需重建层 4,层 1-3 使用缓存。
|
||||
|
||||
#### 3. 容器启动快
|
||||
#### 3。容器启动快
|
||||
|
||||
容器启动时不需要复制镜像,只需:
|
||||
1. 在镜像层上创建一个薄的可写层
|
||||
@@ -59,7 +61,7 @@ COPY . . # 层4:应用代码
|
||||
|
||||
---
|
||||
|
||||
### Copy-on-Write(写时复制)
|
||||
### Copy-on-Write (写时复制)
|
||||
|
||||
当容器修改只读层中的文件时:
|
||||
|
||||
@@ -141,11 +143,15 @@ flowchart TD
|
||||
OverlayFS --> Lower1
|
||||
```
|
||||
|
||||
- **lowerdir**:只读的镜像层(可以有多个)
|
||||
- **lowerdir**:只读的镜像层 (可以有多个)
|
||||
- **upperdir**:可写的容器层
|
||||
- **workdir**:OverlayFS 的工作目录
|
||||
- **merged**:联合挂载后的视图
|
||||
|
||||
#### 概述
|
||||
|
||||
总体概述了以下内容。
|
||||
|
||||
#### 文件操作行为
|
||||
|
||||
| 操作 | 行为 |
|
||||
@@ -190,7 +196,9 @@ $ docker inspect nginx:alpine --format '{{json .GraphDriver.Data}}' | jq
|
||||
|
||||
为了构建高效、轻量的镜像,我们在使用联合文件系统时应注意以下几点。
|
||||
|
||||
#### 1. 减少镜像层数
|
||||
#### 1。减少镜像层数
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```docker
|
||||
## ❌ 每条命令创建一层
|
||||
@@ -206,13 +214,13 @@ RUN apt-get update && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
```
|
||||
|
||||
#### 2. 避免在容器中写入大量数据
|
||||
#### 2。避免在容器中写入大量数据
|
||||
|
||||
容器层的写入性能低于直接写入。大量数据应使用:
|
||||
- 数据卷(Volume)
|
||||
- 绑定挂载(Bind Mount)
|
||||
- 数据卷 (Volume)
|
||||
- 绑定挂载 (Bind Mount)
|
||||
|
||||
#### 3. 使用 .dockerignore
|
||||
#### 3。使用。dockerignore
|
||||
|
||||
排除不需要的文件可以:
|
||||
- 减小构建上下文
|
||||
|
||||
Reference in New Issue
Block a user