Fix grammar

This commit is contained in:
Baohua Yang
2026-02-17 22:17:02 -08:00
parent f68795f34c
commit 063c3f1381
62 changed files with 117 additions and 161 deletions

View File

@@ -4,9 +4,7 @@ Docker 镜像作为容器运行的基石,其设计理念和实现机制至关
### 一句话理解镜像
> **Docker 镜像是一个只读的模板包含了运行应用所需的一切代码运行时环境变量和配置文件**
如果用一个类比**镜像就像是一张光盘或 ISO 文件**你可以用同一张光盘在不同电脑上安装系统而光盘本身不会被修改同样一个镜像可以创建多个容器而镜像本身保持不变
> **Docker 镜像是一个只读的模板包含了运行应用所需的一切代码运行时环境变量和配置文件**如果用一个类比**镜像就像是一张光盘或 ISO 文件**你可以用同一张光盘在不同电脑上安装系统而光盘本身不会被修改同样一个镜像可以创建多个容器而镜像本身保持不变
### 镜像与操作系统的关系
@@ -39,16 +37,13 @@ Docker 镜像是一个特殊的文件系统,包含:
| **库文件** | libcOpenSSL各种依赖库 |
| **配置文件** | nginx.confmy.cnf |
| **环境变量** | PATHLANG 等预设值 |
| **元数据** | 启动命令暴露端口数据卷定义 |
**关键特性**
| **元数据**| 启动命令暴露端口数据卷定义 |**关键特性**
- 镜像是**只读**
- 镜像**不包含**动态数据
- 镜像构建后**内容不会改变**
### 分层存储镜像的核心设计
镜像的分层存储机制是 Docker 最具创新性的特性之一通过 Union FS 技术Docker 能够高效地构建和管理镜像
#### 为什么需要分层
@@ -113,9 +108,7 @@ COPY app.conf /etc/nginx/ # 第 4 层:复制配置文件
#### 分层存储的"陷阱"
> **笔者特别提醒**理解这一点可以帮你避免构建出臃肿的镜像
**关键原理**每一层的文件变化会被记录**删除操作只是标记不会真正减小镜像体积**
> **笔者特别提醒**理解这一点可以帮你避免构建出臃肿的镜像**关键原理**每一层的文件变化会被记录**删除操作只是标记不会真正减小镜像体积**
```docker
## 错误示范 ❌
@@ -126,6 +119,7 @@ RUN apt-get install -y build-essential # 安装编译工具(约 200MB
RUN make && make install # 编译应用
RUN apt-get remove build-essential # 试图删除编译工具
## 结果:镜像仍然包含 200MB 的编译工具!
```
```docker
@@ -139,6 +133,7 @@ RUN apt-get update && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
## 在同一层完成安装、使用、清理
```
#### 查看镜像的分层

View File

@@ -4,9 +4,7 @@
### 一句话理解容器
> **容器是镜像的运行实例如果把镜像比作程序那么容器就是进程**
用面向对象编程的术语来说**镜像是类Class容器是对象Instance**
> **容器是镜像的运行实例如果把镜像比作程序那么容器就是进程**用面向对象编程的术语来说**镜像是类Class容器是对象Instance**
- 一个镜像可以创建多个容器
- 每个容器相互独立互不影响
@@ -14,9 +12,7 @@
### 容器的本质
> 💡 **笔者认为理解这一点是理解 Docker 的关键**
**容器的本质是一个特殊的进程**
> 💡 **笔者认为理解这一点是理解 Docker 的关键****容器的本质是一个特殊的进程**
```
┌─────────────────────────────────────────────────────────────┐
@@ -71,7 +67,6 @@
### 容器的存储层
理解容器的存储层机制对于数据的持久化和镜像的优化至关重要本节将介绍容器的可写层以及 Copy-on-Write 机制
#### 镜像层 + 容器层
@@ -108,9 +103,7 @@
#### 容器存储层的生命周期
> **笔者特别强调**这是新手最容易踩的坑
**容器存储层与容器生命周期绑定容器删除数据就没了**
> **笔者特别强调**这是新手最容易踩的坑**容器存储层与容器生命周期绑定容器删除数据就没了**
```bash
## 创建容器,写入数据
@@ -124,6 +117,7 @@ root@abc123:/# exit
$ docker rm abc123
## 数据丢了!没有任何办法恢复!
```
#### 正确的数据持久化方式
@@ -149,7 +143,6 @@ $ docker run -v /host/path:/container/path nginx
### 容器的生命周期
掌握容器的生命周期对于管理和调试 Docker 应用非常重要下图展示了容器从创建到删除的完整状态流转
```
@@ -217,6 +210,7 @@ $ docker rm -f abc123 # 强制删除运行中的容器
## 主进程运行,容器运行
## 主进程退出,容器停止
```
这就是为什么

View File

@@ -44,6 +44,7 @@ Docker Registry 中可以包含多个 Repository每个 Repository 可以包
| **Tag标签** | 仓库内的版本标识 | `latest``1.25``alpine` |
#### 镜像的完整名称
一个完整的 Docker 镜像名称由 Registry 地址用户名/组织名仓库名和标签组成了解其结构有助于我们更准确地定位镜像
```
@@ -81,7 +82,6 @@ gcr.io/google-containers/pause:3.6
### 公共 Registry 服务
公共 Registry 服务为开发者提供了便捷的镜像获取途径其中最著名的是 Docker Hub
#### Docker Hub默认
@@ -138,7 +138,6 @@ $ docker push username/myapp:v1.0
#### 官方 Registry 镜像
Docker 官方提供了 [registry](https://hub.docker.com/_/registry/) 镜像,可以快速搭建私有 Registry
```bash
@@ -224,7 +223,6 @@ $ docker logout
### 镜像的安全性
在使用公共镜像或维护私有镜像时安全性是不容忽视的重要环节
#### 使用官方镜像