Fix and update

This commit is contained in:
baohua
2026-02-09 11:34:35 -08:00
parent 784c989789
commit bb94a9f617
136 changed files with 2146 additions and 262 deletions

View File

@@ -1,5 +1,7 @@
## 联合文件系统
联合文件系统UnionFS Docker 镜像分层存储的基础它允许将多个目录挂载为同一个虚拟文件系统
### 什么是联合文件系统
联合文件系统UnionFS是一种**分层轻量级**的文件系统它将多个目录"联合"挂载到同一个虚拟目录形成一个统一的文件系统视图
@@ -31,8 +33,12 @@
### 为什么 Docker 使用联合文件系统
Docker 选择联合文件系统作为其存储驱动主要基于以下几个核心优势
#### 1. 镜像分层复用
具体内容如下
```
nginx:alpine myapp:latest
│ │
@@ -94,7 +100,7 @@ Docker 可使用多种联合文件系统实现:
| 存储驱动 | 说明 | 推荐程度 |
|---------|------|---------|
| **overlay2** | 现代 Linux 默认驱动性能优秀 | **推荐** |
| **overlay2**| 现代 Linux 默认驱动性能优秀 | **推荐** |
| **aufs** | 早期默认兼容性好 | 遗留系统 |
| **btrfs** | 使用 Btrfs 子卷 | 特定场景 |
| **zfs** | 使用 ZFS 数据集 | 特定场景 |
@@ -113,6 +119,8 @@ Docker 可使用多种联合文件系统实现:
#### 查看当前存储驱动
运行以下命令
```bash
$ docker info | grep "Storage Driver"
Storage Driver: overlay2
@@ -161,8 +169,11 @@ overlay2 是目前最推荐的存储驱动:
### 查看镜像层
运行以下命令
```bash
## 查看镜像的层信息
$ docker history nginx:alpine
IMAGE CREATED CREATED BY SIZE
a6eb2a334a9f 2 weeks ago CMD ["nginx" "-g" "daemon off;"] 0B
@@ -173,6 +184,7 @@ a6eb2a334a9f 2 weeks ago CMD ["nginx" "-g" "daemon off;"] 0B
...
## 查看层的存储位置
$ docker inspect nginx:alpine --format '{{json .GraphDriver.Data}}' | jq
{
"LowerDir": "/var/lib/docker/overlay2/.../diff:/var/lib/docker/overlay2/.../diff",
@@ -186,15 +198,21 @@ $ docker inspect nginx:alpine --format '{{json .GraphDriver.Data}}' | jq
### 最佳实践
为了构建高效轻量的镜像我们在使用联合文件系统时应注意以下几点
#### 1. 减少镜像层数
具体内容如下
```docker
## ❌ 每条命令创建一层
RUN apt-get update
RUN apt-get install -y nginx
RUN rm -rf /var/lib/apt/lists/*
## ✅ 合并为一层
RUN apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/*