chore: remove unused historic image files

This commit is contained in:
Baohua Yang
2026-02-21 16:43:31 -08:00
parent 79ac9c639a
commit 6aa7a51fef
124 changed files with 1001 additions and 492 deletions

View File

@@ -188,6 +188,8 @@ WORKDIR /data
### 与其他指令的关系
相关信息如下表
| 指令 | WORKDIR 的影响 |
|------|---------------|
| `RUN` | WORKDIR 中执行命令 |

View File

@@ -165,6 +165,8 @@ exec gosu redis "$@"
#### 为什么不用 su/sudo
相关信息如下表
| 问题 | su/sudo | gosu |
|------|---------|------|
| TTY 要求 | 需要 | 不需要 |
@@ -298,6 +300,7 @@ RUN mkdir -p /app/data && chown appuser:appuser /app/data
root 用户无法绑定 80443 等端口
**解决**
1. 使用高端口 ( 8080)
2. 在运行时映射端口`docker run -p 80:8080`

View File

@@ -18,6 +18,7 @@ HEALTHCHECK NONE
### 为什么需要 HEALTHCHECK
在没有 HEALTHCHECK 之前Docker 只能通过**进程退出码**来判断容器状态**问题场景**
- Web 服务死锁无法响应请求但进程仍在运行
- 数据库正在启动中尚未准备好接受连接
- 应用陷入死循环CPU 爆满但进程存活
@@ -58,11 +59,13 @@ HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
#### 常用选项
相关信息如下表
| 选项 | 说明 | 默认值 |
|------|------|--------|
| `--interval` | 两次检查的间隔 | 30s |
| `--timeout` | 检查命令的超时时间 | 30s |
| `--start-period` | 启动缓冲期期间失败不计入次数 | 0s |
| `--start-period` | 启动缓冲期 (期间失败不计入次数)| 0s |
| `--retries` | 连续失败多少次标记为 unhealthy | 3 |
---

View File

@@ -21,6 +21,7 @@ ONBUILD <其它指令>
#### 场景维护 Node.js 项目
假设你有多个 Node.js 项目它们的构建流程都一样
1. 创建目录
2. 复制 `package.json`
3. 执行 `npm install`
@@ -119,6 +120,7 @@ ONBUILD COPY dist/ /usr/share/nginx/html/
#### 1继承性限制
`ONBUILD` 指令**只会继承一次**
- 镜像 A ( ONBUILD)
- 镜像 B (FROM A) -> 触发 ONBUILD
- 镜像 C (FROM B) -> **不会**再次触发 ONBUILD

View File

@@ -11,6 +11,7 @@ SHELL ["executable", "parameters"]
```
`SHELL` 指令允许覆盖 Docker 默认的 shell
- **Linux 默认**`["/bin/sh", "-c"]`
- **Windows 默认**`["cmd", "/S", "/C"]`

View File

@@ -81,6 +81,7 @@ RUN apt-get update && \
RUN apt-get update && apt-get install -y package-bar \
&& rm -rf /var/lib/apt/lists/*
```
- **Alpine**:
```docker
RUN apk add --no-cache package-bar

View File

@@ -147,6 +147,7 @@ COPY --chown=node . /app/
### 保留文件元数据
COPY 会保留源文件的元数据
- 执行权限
- 修改时间
@@ -162,11 +163,13 @@ COPY start.sh /app/
### COPY vs ADD
相关信息如下表
| 特性 | COPY | ADD |
|------|------|-----|
| 复制本地文件 | | |
| 自动解压 tar | | |
| 支持 URL | | 不推荐 |
| 支持 URL | | (不推荐)|
| 推荐程度 | **推荐** | 特殊场景使用 |
```docker
@@ -219,6 +222,7 @@ COPY --link --from=builder /app/dist /usr/share/nginx/html
```
`--link` 的优势
- 更高效利用构建缓存
- 并行化构建过程
- 加速多阶段构建
@@ -241,6 +245,7 @@ Dockerfile
```
这可以
- 减小构建上下文大小
- 加速构建
- 避免复制敏感文件

View File

@@ -12,6 +12,7 @@ ADD [选项] ["<源路径>", ... "<目标路径>"]
```
`ADD` `COPY` 基础上增加了两个功能
1. 自动解压 tar 压缩包
2. 支持从 URL 下载文件 (不推荐)
@@ -19,11 +20,13 @@ ADD [选项] ["<源路径>", ... "<目标路径>"]
### ADD vs COPY
相关信息如下表
| 特性 | COPY | ADD |
|------|------|-----|
| 复制本地文件 | | |
| 自动解压 tar | | |
| 支持 URL | | 不推荐 |
| 支持 URL | | (不推荐)|
| 行为可预测性 | | |
| 推荐程度 | **优先使用** | 仅解压场景 |
@@ -46,6 +49,7 @@ ADD app.tar.gz /app/
```
ADD 会识别并解压以下格式
- `.tar`
- `.tar.gz` / `.tgz`
- `.tar.bz2` / `.tbz2`
@@ -95,6 +99,8 @@ ADD https://example.com/app.zip /app/app.zip
#### 为什么不推荐
相关信息如下表
| 问题 | 说明 |
|------|------|
| 权限固定 | 下载的文件权限为 600通常需要额外 RUN 修改 |
@@ -118,6 +124,7 @@ RUN curl -fsSL https://example.com/app.tar.gz | tar -xz -C /app
```
优势
- 一条 RUN 完成下载解压清理
- 减少镜像层数
- 更清晰的构建意图

View File

@@ -31,6 +31,7 @@ CMD ["node", "server.js"]
```
**优点**
- 直接执行指定程序是容器的 PID 1
- 正确接收信号 ( SIGTERM)
- 无需 shell 解析
@@ -62,6 +63,8 @@ CMD ["sh", "-c", "echo $HOME"]
### exec 格式 vs shell 格式
相关信息如下表
| 特性 | exec 格式 | shell 格式 |
|------|----------|-----------|
| 主进程 | 指定的程序 | `/bin/sh` |
@@ -163,6 +166,8 @@ CMD ["nginx", "-g", "daemon off;"]
### CMD vs ENTRYPOINT
相关信息如下表
| 指令 | 用途 | 运行时行为 |
|------|------|-----------|
| **CMD**| 默认命令 | `docker run` 参数会**覆盖** |

View File

@@ -12,6 +12,8 @@
### 语法格式
相关信息如下表
| 格式 | 语法 | 推荐程度 |
|------|------|---------|
| **exec 格式**| `ENTRYPOINT ["可执行文件", "参数1"]` | **推荐** |
@@ -35,6 +37,8 @@ ENTRYPOINT nginx -g "daemon off;"
#### 核心区别
相关信息如下表
| 特性 | ENTRYPOINT | CMD |
|------|------------|-----|
| **定位** | 固定的入口程序 | 默认参数 |
@@ -272,13 +276,15 @@ $ docker run --entrypoint /bin/cat myimage /etc/os-release
### ENTRYPOINT CMD 组合表
相关信息如下表
| ENTRYPOINT | CMD | 最终执行命令 |
|------------|-----|-------------|
| | | 容器无法启动 |
| | | (容器无法启动)|
| | `["cmd", "p1"]` | `cmd p1` |
| `["ep", "p1"]` | | `ep p1` |
| `["ep", "p1"]` | `["cmd", "p2"]` | `ep p1 cmd p2` |
| `ep p1`shell | `["cmd", "p2"]` | `/bin/sh -c "ep p1"`CMD 被忽略 |
| `ep p1` (shell)| `["cmd", "p2"]` | `/bin/sh -c "ep p1"` (CMD 被忽略)|
> **注意**shell 格式的 ENTRYPOINT 会忽略 CMD

View File

@@ -150,12 +150,14 @@ DATABASE_URL=postgres://localhost/mydb
### ENV vs ARG
相关信息如下表
| 特性 | ENV | ARG |
|------|-----|-----|
| **生效时间** | 构建时 + 运行时 | 仅构建时 |
| **持久性** | 写入镜像运行时可用 | 构建后消失 |
| **覆盖方式** | `docker run -e` | `docker build --build-arg` |
| **适用场景** | 应用配置 | 构建参数如版本号 |
| **适用场景** | 应用配置 | 构建参数 (如版本号)|
#### 概述

View File

@@ -16,12 +16,14 @@ ARG <参数名>[=<默认值>]
### ARG vs ENV
相关信息如下表
| 特性 | ARG | ENV |
|------|-----|-----|
| **生效时间** | 仅构建时 | 构建时 + 运行时 |
| **持久性** | 构建后消失 | 写入镜像 |
| **覆盖方式** | `docker build --build-arg` | `docker run -e` |
| **适用场景** | 构建参数版本号等 | 应用配置 |
| **适用场景** | 构建参数 (版本号等)| 应用配置 |
| **可见性** | `docker history` 可见 | `docker inspect` 可见 |
```

View File

@@ -197,11 +197,13 @@ $ docker inspect mycontainer --format '{{json .Mounts}}' | jq
### VOLUME vs docker run -v
相关信息如下表
| 特性 | Dockerfile VOLUME | docker run -v |
|------|-------------------|---------------|
| **定义时机** | 镜像构建时 | 容器运行时 |
| **默认行为** | 创建匿名卷 | 可指定命名卷或路径 |
| **灵活性** | 固定路径 | 可任意指定 |
| **灵活性** | (固定路径)| (可任意指定)|
| **适用场景** | 定义必须持久化的路径 | 灵活的数据管理 |
---

View File

@@ -76,11 +76,13 @@ $ docker port $(docker ps -q)
### EXPOSE vs -p
相关信息如下表
| 特性 | EXPOSE | -p |
|------|--------|-----|
| **位置** | Dockerfile | docker run 命令 |
| **作用** | 声明/文档 | 实际端口映射 |
| **是否必需** | | 外部访问时 |
| **是否必需** | | (外部访问时)|
| **映射发生时** | 不发生 | 运行时发生 |
```mermaid
@@ -130,6 +132,7 @@ EXPOSE 80
```
EXPOSE 不会
- 自动进行端口映射
- 让服务可从外部访问
- 在容器启动时开启端口监听

View File

@@ -1,12 +1,14 @@
## 本章小结
相关信息如下表
| 要点 | 说明 |
|------|------|
| **作用** | 设置后续指令的工作目录 |
| **语法** | `WORKDIR /path` |
| **自动创建** | 目录不存在会自动创建 |
| **持久性** | 影响后续所有指令直到下次 WORKDIR |
| **不要用** | `RUN cd /path`无效 |
| **不要用** | `RUN cd /path` (无效)|
### 延伸阅读
@@ -46,7 +48,7 @@
|------|------|
| **作用** | 定义在子镜像构建时执行的指令 |
| **语法** | `ONBUILD INSTRUCTION` |
| **适用** | 基础架构镜像Node, Python, Go |
| **适用** | 基础架构镜像 (Node, Python, Go )|
| **限制** | 只继承一次不可级联 |
| **规范** | 建议使用 `-onbuild` 标签后缀 |
@@ -195,7 +197,7 @@
| 要点 | 说明 |
|------|------|
| **作用** | 声明容器提供服务的端口文档 |
| **作用** | 声明容器提供服务的端口 (文档)|
| **不会** | 自动映射端口或开放外部访问 |
| **配合** | `docker run -P` 自动映射 |
| **外部访问** | 需要 `-p 宿主机端口:容器端口` |