Fix space with bold markdown

This commit is contained in:
Baohua Yang
2026-02-21 17:39:37 -08:00
parent 6aa7a51fef
commit 2ab40eacc0
64 changed files with 148 additions and 301 deletions

View File

@@ -47,7 +47,7 @@ RUN echo "hello" > world.txt # 文件在根目录!
如下代码块所示展示了相关示例
```
```dockerfile
RUN cd /app
启动容器 → cd /app仅内存变化→ 提交镜像层 → 容器销毁

View File

@@ -80,7 +80,7 @@ USER 1001:1001
### 用户必须已存在
`USER` 指令只能切换到**已存在**的用户
`USER` 指令只能切换到 **已存在** 的用户
```docker
## ❌ 错误:用户不存在

View File

@@ -17,7 +17,7 @@ HEALTHCHECK NONE
### 为什么需要 HEALTHCHECK
在没有 HEALTHCHECK 之前Docker 只能通过**进程退出码**来判断容器状态**问题场景**
在没有 HEALTHCHECK 之前Docker 只能通过 **进程退出码** 来判断容器状态**问题场景**
- Web 服务死锁无法响应请求但进程仍在运行
- 数据库正在启动中尚未准备好接受连接
@@ -26,7 +26,7 @@ HEALTHCHECK NONE
**引入 HEALTHCHECK **
Docker 定期执行指定的检查命令根据返回值判断容器是否 健康
```
```bash
容器状态转换:
Starting ──成功──> Healthy ──失败N次──> Unhealthy
▲ │
@@ -211,6 +211,6 @@ HEALTHCHECK --start-period=60s CMD curl -f http://localhost/ || exit 1
#### 4只检查核心依赖
健康检查应主要关注**当前服务**是否可用而不是检查其下游依赖 (数据库等)下游依赖的检查应由应用逻辑处理
健康检查应主要关注 **当前服务** 是否可用而不是检查其下游依赖 (数据库等)下游依赖的检查应由应用逻辑处理
---

View File

@@ -10,13 +10,13 @@
ONBUILD <其它指令>
```
`ONBUILD` 是一个特殊的指令它后面跟的是其它指令 ( `RUN``COPY` )这些指令**在当前镜像构建时不会执行**只有当以当前镜像为基础镜像去构建下一级镜像时才会被执行
`ONBUILD` 是一个特殊的指令它后面跟的是其它指令 ( `RUN``COPY` )这些指令 **在当前镜像构建时不会执行**只有当以当前镜像为基础镜像去构建下一级镜像时才会被执行
---
### 为什么需要 ONBUILD
`ONBUILD` 主要用于制作**语言栈基础镜像****框架基础镜像**
`ONBUILD` 主要用于制作 **语言栈基础镜像** **框架基础镜像**
#### 场景维护 Node.js 项目
@@ -64,7 +64,7 @@ FROM my-node-base
如下代码块所示展示了相关示例
```
```bash
基础镜像构建:
Dockerfile (含 ONBUILD) ──build──> 基础镜像 (记录了 ONBUILD 触发器)
(指令未执行)
@@ -119,15 +119,15 @@ ONBUILD COPY dist/ /usr/share/nginx/html/
#### 1继承性限制
`ONBUILD` 指令**只会继承一次**
`ONBUILD` 指令 **只会继承一次**
- 镜像 A ( ONBUILD)
- 镜像 B (FROM A) -> 触发 ONBUILD
- 镜像 C (FROM B) -> **不会**再次触发 ONBUILD
- 镜像 C (FROM B) -> **不会** 再次触发 ONBUILD
#### 2构建上下文
子镜像构建时`ONBUILD COPY . .` 中的 `.` 指的是**子项目**的构建上下文而不是基础镜像的上下文
子镜像构建时`ONBUILD COPY . .` 中的 `.` 指的是 **子项目** 的构建上下文而不是基础镜像的上下文
#### 3不允许级联
@@ -147,7 +147,7 @@ ONBUILD COPY dist/ /usr/share/nginx/html/
建议在镜像标签中添加 `-onbuild` 后缀明确告知使用者该镜像包含触发器
```
```bash
node:20-onbuild
python:3.12-onbuild
```

View File

@@ -110,7 +110,7 @@ RUN echo "Using sh again"
### 对其他指令的影响
`SHELL` 影响的是所有使用 **shell 格式**的指令
`SHELL` 影响的是所有使用 **shell 格式** 的指令
| 指令格式 | 是否受 SHELL 影响 |
|---------|-------------------|

View File

@@ -172,7 +172,7 @@ $ docker run -dit --rm --network=laravel -p 8080:80 my/nginx
### 生产环境优化
本小节内容为了方便测试将配置文件直接放到了镜像中实际在使用时**建议**将配置文件作为 `config` `secret` 挂载到容器中请读者自行学习 `Kubernetes` 的相关内容
本小节内容为了方便测试将配置文件直接放到了镜像中实际在使用时 **建议** 将配置文件作为 `config` `secret` 挂载到容器中请读者自行学习 `Kubernetes` 的相关内容
由于篇幅所限本小节只是简单列出更多内容可以参考 https://github.com/khs1994-docker/laravel-demo 项目。

View File

@@ -11,7 +11,7 @@ RUN <command>
RUN ["executable", "param1", "param2"]
```
`RUN` 指令是 Dockerfile 中最常用的指令之一它在**当前镜像层**之上创建一个新层执行指定的命令并提交结果
`RUN` 指令是 Dockerfile 中最常用的指令之一它在 **当前镜像层** 之上创建一个新层执行指定的命令并提交结果
---

View File

@@ -58,9 +58,9 @@ COPY src/*.js /app/src/
COPY src/ /app/src/
```
> **注意**复制目录时复制的是目录的**内容**不包含目录本身
> **注意**复制目录时复制的是目录的 **内容**不包含目录本身
```
```bash
构建上下文: 镜像内:
src/ /app/src/
├── index.js → ├── index.js

View File

@@ -68,7 +68,7 @@ ADD ubuntu-noble-core-cloudimg-amd64-root.tar.gz /
如下代码块所示展示了相关示例
```
```bash
ADD app.tar.gz /app/
├─ 识别 .tar.gz 格式

View File

@@ -57,7 +57,7 @@ CMD echo $HOME
CMD ["sh", "-c", "echo $HOME"]
```
**优点**可以使用环境变量管道等 shell 特性**缺点**主进程是 sh信号无法正确传递给应用
**优点**可以使用环境变量管道等 shell 特性 **缺点**主进程是 sh信号无法正确传递给应用
---
@@ -109,7 +109,7 @@ $ docker run -it ubuntu # 进入 bash
$ docker run ubuntu cat /etc/os-release # 覆盖为 cat 命令
```
```
```bash
Dockerfile: docker run 命令:
CMD ["/bin/bash"] + cat /etc/os-release
│ │
@@ -138,7 +138,7 @@ CMD service nginx start
如下代码块所示展示了相关示例
```
```bash
1. CMD service nginx start
↓ 被转换为
2. CMD ["sh", "-c", "service nginx start"]
@@ -170,8 +170,8 @@ CMD ["nginx", "-g", "daemon off;"]
| 指令 | 用途 | 运行时行为 |
|------|------|-----------|
| **CMD**| 默认命令 | `docker run` 参数会**覆盖** |
| **ENTRYPOINT**| 入口点 | `docker run` 参数会**追加**到它后面 |
| **CMD**| 默认命令 | `docker run` 参数会 **覆盖** |
| **ENTRYPOINT**| 入口点 | `docker run` 参数会 **追加** 到它后面 |
#### 单独使用 CMD

View File

@@ -4,7 +4,7 @@
### 什么是 ENTRYPOINT
`ENTRYPOINT` 指定容器启动时运行的入口程序 CMD 不同ENTRYPOINT 定义的命令不会被 `docker run` 的参数覆盖而是**接收这些参数**
`ENTRYPOINT` 指定容器启动时运行的入口程序 CMD 不同ENTRYPOINT 定义的命令不会被 `docker run` 的参数覆盖而是 **接收这些参数**
> **核心作用**让镜像像一个可执行程序一样使用`docker run` 的参数作为这个程序的参数
@@ -141,7 +141,7 @@ HTTP/1.1 200 OK
如下代码块所示展示了相关示例
```
```bash
ENTRYPOINT ["curl", "-s", "http://myip.ipip.net"]
docker run myip -i
@@ -199,7 +199,7 @@ exec "$@"
如下代码块所示展示了相关示例
```
```bash
docker run redis docker run redis bash
│ │
▼ ▼

View File

@@ -26,7 +26,7 @@ ARG <参数名>[=<默认值>]
| **适用场景** | 构建参数 (版本号等)| 应用配置 |
| **可见性** | `docker history` 可见 | `docker inspect` 可见 |
```
```dockerfile
构建时 运行时
├─ ARG VERSION=1.0 │ ARG 已消失)
├─ ENV APP_ENV=prod │ APP_ENV=prod仍存在

View File

@@ -10,7 +10,7 @@
EXPOSE <端口> [<端口>/<协议>...]
```
`EXPOSE` 声明容器运行时提供服务的端口这是一个**文档性质的声明**告诉使用者容器会监听哪些端口
`EXPOSE` 声明容器运行时提供服务的端口这是一个 **文档性质的声明**告诉使用者容器会监听哪些端口
---

View File

@@ -4,7 +4,7 @@
## 什么是 Dockerfile
Dockerfile 是一个文本文件其內包含了一条条的**指令 (Instruction)**每一条指令构建一层therefore 每一条指令的内容就是描述该层应当如何构建
Dockerfile 是一个文本文件其內包含了一条条的 **指令 (Instruction)**每一条指令构建一层therefore 每一条指令的内容就是描述该层应当如何构建
[第四章](../04_image/README.md)我们通过 `docker commit` 学习了镜像的构成但是手动 `commit` 只能作为临时修补并不适合作为生产环境镜像的构建方式