mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
Add more content and fix format
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
## 8.2 数据卷
|
||||
## 8.1 数据卷
|
||||
|
||||
### 8.2.1 为什么需要数据卷
|
||||
### 8.1.1 为什么需要数据卷
|
||||
|
||||
容器的存储层有一个关键问题:**容器删除后,数据就没了**。
|
||||
|
||||
@@ -15,7 +15,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### 8.2.2 数据卷的特性
|
||||
### 8.1.2 数据卷的特性
|
||||
|
||||
| 特性 | 说明 |
|
||||
|------|------|
|
||||
@@ -27,12 +27,10 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### 8.2.3 数据卷 vs 容器存储层
|
||||
### 8.1.3 数据卷 vs 容器存储层
|
||||
|
||||
#### 容器存储层 (不推荐存储重要数据)
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
subgraph Container [容器]
|
||||
@@ -47,8 +45,6 @@ graph TD
|
||||
|
||||
#### 数据卷 (推荐)
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
subgraph Container [容器]
|
||||
@@ -65,7 +61,7 @@ graph TD
|
||||
|
||||
---
|
||||
|
||||
### 8.2.4 数据卷基本操作
|
||||
### 8.1.4 数据卷基本操作
|
||||
|
||||
#### 创建数据卷
|
||||
|
||||
@@ -107,7 +103,7 @@ $ docker volume inspect my-vol
|
||||
|
||||
---
|
||||
|
||||
### 8.2.5 挂载数据卷
|
||||
### 8.1.5 挂载数据卷
|
||||
|
||||
#### 方式一:--mount (推荐)
|
||||
|
||||
@@ -163,7 +159,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 8.2.6 使用场景示例
|
||||
### 8.1.6 使用场景示例
|
||||
|
||||
#### 场景一:数据库持久化
|
||||
|
||||
@@ -227,7 +223,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 8.2.7 数据卷管理
|
||||
### 8.1.7 数据卷管理
|
||||
|
||||
#### 删除数据卷
|
||||
|
||||
@@ -261,7 +257,7 @@ $ docker volume prune -f
|
||||
|
||||
---
|
||||
|
||||
### 8.2.8 数据卷备份与恢复
|
||||
### 8.1.8 数据卷备份与恢复
|
||||
|
||||
#### 备份数据卷
|
||||
|
||||
@@ -316,7 +312,7 @@ echo "Backed up ${VOLUME_NAME} to ${BACKUP_DIR}/${VOLUME_NAME}_${TIMESTAMP}.tar.
|
||||
|
||||
---
|
||||
|
||||
### 8.2.9 数据卷 vs 绑定挂载
|
||||
### 8.1.9 数据卷 vs 绑定挂载
|
||||
|
||||
Docker 有两种主要的数据持久化方式:
|
||||
|
||||
@@ -342,7 +338,7 @@ $ docker run -v /host/path:/app/data nginx
|
||||
|
||||
---
|
||||
|
||||
### 8.2.10 常见问题
|
||||
### 8.1.10 常见问题
|
||||
|
||||
#### Q:如何知道容器使用了哪些数据卷?
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## 8.3 挂载主机目录
|
||||
## 8.2 挂载主机目录
|
||||
|
||||
### 8.3.1 什么是绑定挂载
|
||||
### 8.2.1 什么是绑定挂载
|
||||
|
||||
Bind Mount (绑定挂载) 将 **宿主机的目录或文件** 直接挂载到容器中。容器可以读写宿主机的文件系统。
|
||||
|
||||
@@ -21,7 +21,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### 8.3.2 Bind Mount vs Volume
|
||||
### 8.2.2 Bind Mount vs Volume
|
||||
|
||||
| 特性 | Bind Mount | Volume |
|
||||
|------|------------|--------|
|
||||
@@ -45,7 +45,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### 8.3.3 基本语法
|
||||
### 8.2.3 基本语法
|
||||
|
||||
#### 使用 --mount (推荐)
|
||||
|
||||
@@ -73,7 +73,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 8.3.4 使用场景
|
||||
### 8.2.4 使用场景
|
||||
|
||||
#### 场景一:开发环境代码同步
|
||||
|
||||
@@ -125,7 +125,7 @@ $ docker run --rm -it \
|
||||
|
||||
---
|
||||
|
||||
### 8.3.5 只读挂载
|
||||
### 8.2.5 只读挂载
|
||||
|
||||
防止容器修改宿主机文件:
|
||||
|
||||
@@ -152,7 +152,7 @@ touch: /app/config/new.txt: Read-only file system
|
||||
|
||||
---
|
||||
|
||||
### 8.3.6 挂载单个文件
|
||||
### 8.2.6 挂载单个文件
|
||||
|
||||
```bash
|
||||
## 挂载 bash 历史记录
|
||||
@@ -172,7 +172,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 8.3.7 查看挂载信息
|
||||
### 8.2.7 查看挂载信息
|
||||
|
||||
```bash
|
||||
$ docker inspect mycontainer --format '{{json .Mounts}}' | jq
|
||||
@@ -203,7 +203,7 @@ $ docker inspect mycontainer --format '{{json .Mounts}}' | jq
|
||||
|
||||
---
|
||||
|
||||
### 8.3.8 常见问题
|
||||
### 8.2.8 常见问题
|
||||
|
||||
#### Q:路径不存在报错
|
||||
|
||||
@@ -251,7 +251,7 @@ $ docker run -v /host/path:/container/path:cached myapp
|
||||
|
||||
---
|
||||
|
||||
### 8.3.9 最佳实践
|
||||
### 8.2.9 最佳实践
|
||||
|
||||
#### 1. 开发环境使用 Bind Mount
|
||||
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
## 8.4 tmpfs 挂载
|
||||
## 8.3 tmpfs 挂载
|
||||
|
||||
`tmpfs` 挂载会把数据放在宿主机内存中,而不是写入容器可写层或数据卷。
|
||||
|
||||
### 8.4.1 适用场景
|
||||
### 8.3.1 适用场景
|
||||
|
||||
- 临时缓存
|
||||
- 会话数据
|
||||
- 不希望落盘的敏感中间文件
|
||||
|
||||
### 8.4.2 基本用法
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
### 8.3.2 基本用法
|
||||
|
||||
```bash
|
||||
$ docker run --tmpfs /run:rw,noexec,nosuid,size=64m nginx
|
||||
@@ -22,13 +20,13 @@ $ docker run --tmpfs /run:rw,noexec,nosuid,size=64m nginx
|
||||
$ docker run --mount type=tmpfs,destination=/run,tmpfs-size=67108864 nginx
|
||||
```
|
||||
|
||||
### 8.4.3 注意事项
|
||||
### 8.3.3 注意事项
|
||||
|
||||
- 容器停止后,`tmpfs` 数据会丢失。
|
||||
- `tmpfs` 占用宿主机内存,建议显式限制大小。
|
||||
- 不适合需要持久化的数据。
|
||||
|
||||
### 8.4.4 与 Volume / Bind Mount 对比
|
||||
### 8.3.4 与 Volume / Bind Mount 对比
|
||||
|
||||
| 类型 | 数据位置 | 持久化 | 典型用途 |
|
||||
|------|---------|-------|---------|
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## 8.5 本章小结
|
||||
## 本章小结
|
||||
|
||||
| 要点 | 说明 |
|
||||
|------|------|
|
||||
@@ -8,7 +8,7 @@
|
||||
| **适用场景** | 开发环境、配置文件、日志 |
|
||||
| **vs Volume** | Bind 更灵活,Volume 更适合生产 |
|
||||
|
||||
### 8.5.1 延伸阅读
|
||||
### 8.4.1 延伸阅读
|
||||
|
||||
- [数据卷](8.1_volume.md):Docker 管理的持久化存储
|
||||
- [tmpfs 挂载](8.3_tmpfs.md):内存临时存储
|
||||
@@ -23,7 +23,7 @@
|
||||
| 清理未用 | `docker volume prune` |
|
||||
| 挂载数据卷 | `-v name:/path` 或 `--mount source=name,target=/path` |
|
||||
|
||||
### 8.5.2 延伸阅读
|
||||
### 8.4.2 延伸阅读
|
||||
|
||||
- [绑定挂载](8.2_bind-mounts.md):挂载宿主机目录
|
||||
- [tmpfs 挂载](8.3_tmpfs.md):内存中的临时存储
|
||||
|
||||
Reference in New Issue
Block a user