mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-14 05:41:11 +00:00
Continue to fix format issues
This commit is contained in:
@@ -62,30 +62,21 @@ root@af8bae53bdd3:/# exit # 退出容器
|
||||
|
||||
执行 `docker run` 时,Docker 在后台完成以下操作:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ docker run ubuntu:24.04 /bin/echo "Hello" │
|
||||
└───────────────────────────────┬─────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ 1. 检查本地是否有 ubuntu:24.04 镜像 │
|
||||
│ ├── 有 → 使用本地镜像 │
|
||||
│ └── 无 → 从 Registry 下载 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ 2. 创建容器 │
|
||||
│ • 基于镜像的只读层 │
|
||||
│ • 添加一层可读写层(容器存储层) │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ 3. 配置网络 │
|
||||
│ • 创建虚拟网卡 │
|
||||
│ • 分配 IP 地址 │
|
||||
│ • 连接到 Docker 网桥 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ 4. 启动容器,执行指定命令 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ 5. 命令执行完毕,容器停止 │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Cmd["docker run ubuntu:24.04 /bin/echo 'Hello'"] --> Step1
|
||||
|
||||
Step1{"1. 检查本地是否有 ubuntu:24.04 镜像"}
|
||||
Step1 -- 有 --> Step1_Yes["使用本地镜像"]
|
||||
Step1 -- 无 --> Step1_No["从 Registry 下载"]
|
||||
|
||||
Step1_Yes --> Step2
|
||||
Step1_No --> Step2
|
||||
|
||||
Step2["2. 创建容器<br/>• 基于镜像的只读层<br/>• 添加一层可读写层(容器存储层)"] --> Step3
|
||||
Step3["3. 配置网络<br/>• 创建虚拟网卡<br/>• 分配 IP 地址<br/>• 连接到 Docker 网桥"] --> Step4
|
||||
Step4["4. 启动容器,执行指定命令"] --> Step5
|
||||
Step5["5. 命令执行完毕,容器停止"]
|
||||
```
|
||||
|
||||
### 常用启动选项
|
||||
@@ -241,19 +232,3 @@ $ docker run -v mydata:/app/data myapp
|
||||
```
|
||||
|
||||
详见[数据管理](../08_data_network/README.md)。
|
||||
|
||||
### 本章小结
|
||||
|
||||
| 操作 | 命令 | 说明 |
|
||||
|------|------|------|
|
||||
| 新建并运行 | `docker run` | 最常用的启动方式 |
|
||||
| 交互式启动 | `docker run -it` | 用于调试或临时操作 |
|
||||
| 后台运行 | `docker run -d` | 用于服务类应用 |
|
||||
| 启动已停止的容器 | `docker start` | 重用已有容器 |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [后台运行](5.2_daemon.md):理解 `-d` 参数和容器生命周期
|
||||
- [进入容器](5.4_attach_exec.md):操作运行中的容器
|
||||
- [网络配置](../08_data_network/network/README.md):理解端口映射的原理
|
||||
- [数据管理](../08_data_network/README.md):数据持久化方案
|
||||
|
||||
@@ -258,19 +258,3 @@ $ docker inspect 容器名
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 本章小结
|
||||
|
||||
| 操作 | 命令 | 说明 |
|
||||
|------|------|------|
|
||||
| 优雅停止 | `docker stop` | 先 SIGTERM,超时后 SIGKILL |
|
||||
| 强制停止 | `docker kill` | 直接 SIGKILL |
|
||||
| 重新启动 | `docker start` | 启动已停止的容器 |
|
||||
| 重启 | `docker restart` | 停止后立即启动 |
|
||||
| 停止全部 | `docker stop $(docker ps -q)` | 停止所有运行中容器 |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [启动容器](../05_container/5.1_run.md):容器启动详解
|
||||
- [删除容器](5.6_rm.md):清理容器
|
||||
- [容器日志](5.2_daemon.md):排查停止原因
|
||||
|
||||
@@ -198,17 +198,29 @@ CONTAINER ID IMAGE STATUS NAMES
|
||||
| **适用场景** | 调试、临时操作 | 查看主进程输出 |
|
||||
| **推荐程度** | ✅ 推荐 | ⚠️ 特殊场景使用 |
|
||||
|
||||
```
|
||||
docker exec docker attach
|
||||
┌─────────────────────┐ ┌─────────────────────┐
|
||||
│ 容器 │ │ 容器 │
|
||||
│ ┌───────────────┐ │ │ ┌───────────────┐ │
|
||||
│ │ PID 1: nginx │ │ │ │ PID 1: bash │◄─┼── 附加到主进程
|
||||
│ ├───────────────┤ │ │ └───────────────┘ │
|
||||
│ │ PID 50: bash │◄─┼── 新进程 │ │
|
||||
│ └───────────────┘ │ │ │
|
||||
└─────────────────────┘ └─────────────────────┘
|
||||
退出 bash 不影响 nginx 退出 bash 容器停止
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph Exec ["docker exec"]
|
||||
direction TB
|
||||
subgraph Container1 ["容器"]
|
||||
E_PID1["PID 1: nginx"]
|
||||
E_PID50["PID 50: bash"]
|
||||
end
|
||||
NewProc["新进程"] -- 附加到 --> E_PID50
|
||||
end
|
||||
|
||||
subgraph Attach ["docker attach"]
|
||||
direction TB
|
||||
subgraph Container2 ["容器"]
|
||||
A_PID1["PID 1: bash"]
|
||||
end
|
||||
MainProc["附加到主进程"] --> A_PID1
|
||||
end
|
||||
|
||||
note1["退出 bash 不影响 nginx"]
|
||||
note2["退出 bash 容器停止"]
|
||||
Container1 -.-> note1
|
||||
Container2 -.-> note2
|
||||
```
|
||||
|
||||
---
|
||||
@@ -280,17 +292,3 @@ $ docker exec -u root -it myapp bash
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 本章小结
|
||||
|
||||
| 需求 | 推荐命令 |
|
||||
|------|---------|
|
||||
| 进入容器调试 | `docker exec -it 容器名 bash` |
|
||||
| 执行单条命令 | `docker exec 容器名 命令` |
|
||||
| 查看主进程输出 | `docker attach 容器名`(慎用) |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [后台运行](5.2_daemon.md):理解容器主进程
|
||||
- [查看容器](5.1_run.md):列出和过滤容器
|
||||
- [容器日志](5.2_daemon.md):查看容器输出
|
||||
|
||||
@@ -265,19 +265,3 @@ $ docker system prune -a --volumes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 本章小结
|
||||
|
||||
| 操作 | 命令 |
|
||||
|------|------|
|
||||
| 删除已停止容器 | `docker rm 容器名` |
|
||||
| 强制删除运行中容器 | `docker rm -f 容器名` |
|
||||
| 删除容器及匿名卷 | `docker rm -v 容器名` |
|
||||
| 清理所有已停止容器 | `docker container prune` |
|
||||
| 删除所有容器 | `docker rm -f $(docker ps -aq)` |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [终止容器](5.3_stop.md):优雅停止容器
|
||||
- [删除镜像](../04_image/4.3_rm.md):清理镜像
|
||||
- [数据卷](../08_data_network/data/volume.md):数据卷管理
|
||||
|
||||
55
05_container/summary.md
Normal file
55
05_container/summary.md
Normal file
@@ -0,0 +1,55 @@
|
||||
## 本章小结
|
||||
|
||||
| 操作 | 命令 | 说明 |
|
||||
|------|------|------|
|
||||
| 新建并运行 | `docker run` | 最常用的启动方式 |
|
||||
| 交互式启动 | `docker run -it` | 用于调试或临时操作 |
|
||||
| 后台运行 | `docker run -d` | 用于服务类应用 |
|
||||
| 启动已停止的容器 | `docker start` | 重用已有容器 |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [后台运行](5.2_daemon.md):理解 `-d` 参数和容器生命周期
|
||||
- [进入容器](5.4_attach_exec.md):操作运行中的容器
|
||||
- [网络配置](../08_data_network/network/README.md):理解端口映射的原理
|
||||
- [数据管理](../08_data_network/README.md):数据持久化方案
|
||||
|
||||
| 操作 | 命令 | 说明 |
|
||||
|------|------|------|
|
||||
| 优雅停止 | `docker stop` | 先 SIGTERM,超时后 SIGKILL |
|
||||
| 强制停止 | `docker kill` | 直接 SIGKILL |
|
||||
| 重新启动 | `docker start` | 启动已停止的容器 |
|
||||
| 重启 | `docker restart` | 停止后立即启动 |
|
||||
| 停止全部 | `docker stop $(docker ps -q)` | 停止所有运行中容器 |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [启动容器](../05_container/5.1_run.md):容器启动详解
|
||||
- [删除容器](5.6_rm.md):清理容器
|
||||
- [容器日志](5.2_daemon.md):排查停止原因
|
||||
|
||||
| 需求 | 推荐命令 |
|
||||
|------|---------|
|
||||
| 进入容器调试 | `docker exec -it 容器名 bash` |
|
||||
| 执行单条命令 | `docker exec 容器名 命令` |
|
||||
| 查看主进程输出 | `docker attach 容器名`(慎用) |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [后台运行](5.2_daemon.md):理解容器主进程
|
||||
- [查看容器](5.1_run.md):列出和过滤容器
|
||||
- [容器日志](5.2_daemon.md):查看容器输出
|
||||
|
||||
| 操作 | 命令 |
|
||||
|------|------|
|
||||
| 删除已停止容器 | `docker rm 容器名` |
|
||||
| 强制删除运行中容器 | `docker rm -f 容器名` |
|
||||
| 删除容器及匿名卷 | `docker rm -v 容器名` |
|
||||
| 清理所有已停止容器 | `docker container prune` |
|
||||
| 删除所有容器 | `docker rm -f $(docker ps -aq)` |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [终止容器](5.3_stop.md):优雅停止容器
|
||||
- [删除镜像](../04_image/4.3_rm.md):清理镜像
|
||||
- [数据卷](../08_data_network/data/volume.md):数据卷管理
|
||||
Reference in New Issue
Block a user