style: apply global formatting fixes (struct, spacing, zhlint)

This commit is contained in:
Baohua Yang
2026-02-21 11:08:52 -08:00
parent ad68b2d973
commit 79ac9c639a
159 changed files with 1708 additions and 882 deletions

View File

@@ -9,11 +9,13 @@
- **前台运行**程序占用当前终端输出直接显示关闭终端程序就停止
- **后台运行**程序在后台执行不占用终端终端关闭也不影响程序
Docker 容器默认是**前台运行**使用 `-d`detach参数可以让容器在后台运行
Docker 容器默认是**前台运行**使用 `-d` (detach) 参数可以让容器在后台运行
### 基本使用
#### 前台运行默认
本节涵盖了相关内容与详细描述主要探讨以下几个方面
#### 前台运行 (默认)
运行以下命令
@@ -25,12 +27,12 @@ hello world
hello world
```
容器会把输出的结果STDOUT打印到宿主机上面此时
容器会把输出的结果 (STDOUT) 打印到宿主机上面此时
- 终端被占用无法执行其他命令
- `Ctrl+C` 会终止容器
- 关闭终端窗口容器也会停止
#### 后台运行使用 -d 参数
#### 后台运行 (使用 -d 参数)
运行以下命令
@@ -43,11 +45,11 @@ $ docker run -d ubuntu:24.04 /bin/sh -c "while true; do echo hello world; sleep
- 容器在后台运行
- 返回容器的完整 ID
- 终端立即释放可以继续执行其他命令
- 输出不会直接显示需要用 `docker logs` 查看
- 输出不会直接显示 (需要用 `docker logs` 查看)
### 深入理解容器为什么会"立即退出"
### 深入理解容器为什么会 立即退出
> **这是初学者最常遇到的困惑** 理解这个问题你就理解了 Docker 的核心设计理念
> **这是初学者最常遇到的困惑**理解这个问题你就理解了 Docker 的核心设计理念
很多人尝试这样启动容器
@@ -59,6 +61,8 @@ $ docker run -d ubuntu:24.04
#### 核心原理容器的生命周期与主进程绑定
如下代码块所示展示了相关示例
```mermaid
flowchart TD
subgraph Lifecycle ["Docker 容器的生命周期 = 容器内 PID 1 进程的生命周期"]
@@ -71,15 +75,15 @@ flowchart TD
当你运行 `docker run -d ubuntu:24.04`
1. 容器启动
2. 没有指定命令默认执行 `/bin/bash`
3. 但没有交互式终端没有 `-it` 参数bash 发现没有输入源
3. 但没有交互式终端 (没有 `-it` 参数)bash 发现没有输入源
4. bash 立即退出
5. 主进程退出容器停止
**关键理解**
- `-d` 参数**不是**让容器"一直运行"
- `-d` 参数是让容器"在后台运行"能运行多久取决于主进程
- `-d` 参数**不是**让容器 一直运行
- `-d` 参数是让容器 在后台运行能运行多久取决于主进程
#### 常见的"立即退出"场景
#### 常见的 立即退出 场景
| 场景 | 原因 | 解决方案 |
|------|------|---------|
@@ -89,6 +93,8 @@ flowchart TD
### 查看后台容器
本节涵盖了相关内容与详细描述主要探讨以下几个方面
#### 查看运行中的容器
运行以下命令
@@ -111,7 +117,7 @@ hello world
...
```
**实时查看日志**类似 `tail -f`
**实时查看日志** (类似 `tail -f`)
```bash
$ docker container logs -f 77b2dc01fe0f
@@ -125,11 +131,13 @@ $ docker container logs -f 77b2dc01fe0f
$ docker container ls -a
```
加上 `-a` 参数可以看到所有容器包括已停止的这对于调试"容器启动即退出"的问题非常有用
加上 `-a` 参数可以看到所有容器包括已停止的这对于调试 容器启动即退出 的问题非常有用
### 最佳实践
#### 1. 长期运行的服务使用 -d
本节涵盖了相关内容与详细描述主要探讨以下几个方面
#### 1长期运行的服务使用 -d
运行以下命令
@@ -147,7 +155,7 @@ $ docker run -d -p 3306:3306 mysql:8
$ docker run -d -p 6379:6379 redis
```
#### 2. 调试时先用前台模式
#### 2调试时先用前台模式
当容器启动有问题时**去掉 `-d` 参数**可以直接看到输出和错误
@@ -157,7 +165,7 @@ $ docker run -d -p 6379:6379 redis
$ docker run myimage:latest
```
#### 3. 使用 --rm 自动清理
#### 3使用 --rm 自动清理
对于一次性任务使用 `--rm` 参数让容器退出后自动删除
@@ -169,7 +177,7 @@ Hello, World!
...
```
#### 4. 配合日志查看
#### 4配合日志查看
运行以下命令
@@ -193,7 +201,9 @@ $ docker logs -t myapp
### 常见问题排查
#### Q: 容器启动后立即退出
本节涵盖了相关内容与详细描述主要探讨以下几个方面
#### Q容器启动后立即退出
1. **查看退出状态码**
```bash
@@ -214,7 +224,7 @@ $ docker logs -t myapp
```
#### Q: 容器在后台运行但无法访问服务
#### Q容器在后台运行但无法访问服务
1. **检查端口映射**
```bash
@@ -226,7 +236,7 @@ $ docker logs -t myapp
$ docker exec mycontainer ps aux
```
#### Q: 如何让已经在后台运行的容器回到前台
#### Q如何让已经在后台运行的容器回到前台
使用 `docker attach`