Docker底层- 命令详解

Docker 命令详解

1. docker start - 启动容器

作用:启动已停止的容器,创建新的进程和 Namespace。

复制代码
┌─────────────────────────────────────────────────────────┐
│  docker start 的执行过程                                │
│                                                          │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 1. 容器状态:Stopped                             │  │
│  │                                                  │  │
│  │  容器元数据存在,但进程已停止                     │  │
│  │  Namespace 已销毁                                │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      │ docker start                     │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 2. 创建新进程和 Namespace                        │  │
│  │                                                  │  │
│  │  • 创建新的 PID Namespace                        │  │
│  │  • 创建新的 Network Namespace                    │  │
│  │  • 创建新的 Mount Namespace                      │  │
│  │  • 创建新的 IPC Namespace                        │  │
│  │  • 创建新的 UTS Namespace                        │  │
│  │  • 创建新的 User Namespace                       │  │
│  │  • 创建新的 Cgroup Namespace                     │  │
│  │  • 启动容器主进程(PID 1)                       │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 3. 容器状态:Running                             │  │
│  │                                                  │  │
│  │  新进程 (PID: 12345)                            │  │
│  │  ├─ PID Namespace: [4026532000]                │  │
│  │  ├─ Network Namespace: [4026532001]            │  │
│  │  ├─ Mount Namespace: [4026532002]              │  │
│  │  └─ ... (其他 Namespace)                        │  │
│  │                                                  │  │
│  │  关键:每次 start 都会创建新的进程和 Namespace!   │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘

2. docker stop - 停止容器

作用:停止运行中的容器,发送信号终止进程,进程退出后 Namespace 会被销毁。

3. docker restart - 重启容器

作用:先停止容器,再启动容器,相当于 stop + start。

复制代码
┌─────────────────────────────────────────────────────────┐
│  docker restart 的执行过程                               │
│                                                          │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 1. 容器状态:Running                             │  │
│  │                                                  │  │
│  │  进程 (PID: 12345)                              │  │
│  │  Namespace: [4026532000]                        │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      │ docker restart                   │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 2. 停止容器(containerStop)                     │  │
│  │                                                  │  │
│  │  • 发送 SIGTERM                                  │  │
│  │  • 等待进程退出                                  │  │
│  │  • 如果超时,发送 SIGKILL                        │  │
│  │  • 进程终止                                      │  │
│  │  • Namespace 销毁                                │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      │ 容器状态:Stopped                │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 3. 启动容器(containerStart)                    │  │
│  │                                                  │  │
│  │  • 创建新的 Namespace                           │  │
│  │  • 启动新的进程 (PID: 12346)                     │  │
│  │  • Namespace: [4026532001] ← 新的!              │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      │ 容器状态:Running                │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 4. 结果                                          │  │
│  │                                                  │  │
│  │  旧进程:已终止                                   │  │
│  │  新进程:已启动                                   │  │
│  │  旧 Namespace:已销毁                             │  │
│  │  新 Namespace:已创建                              │  │
│  │                                                  │  │
│  │  关键:restart = stop + start,创建新的进程!      │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘

4. docker rm - 删除容器

作用:删除容器,先停止容器(如果运行中),然后清理文件系统和元数据。

复制代码
┌─────────────────────────────────────────────────────────┐
│  docker rm 的执行过程                                    │
│                                                          │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 1. 检查容器状态                                  │  │
│  │                                                  │  │
│  │  如果容器正在运行:                               │  │
│  │  • 必须先用 docker stop 停止                     │  │
│  │  • 或者使用 -f 强制删除(会先 kill)              │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      │ 容器已停止                        │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 2. 停止容器(如果还在运行)                      │  │
│  │                                                  │  │
│  │  • 发送 SIGTERM,等待退出                         │  │
│  │  • 如果超时,发送 SIGKILL                        │  │
│  │  • 进程终止                                      │  │
│  │  • Namespace 销毁                                │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 3. 清理资源                                      │  │
│  │                                                  │  │
│  │  • 停止统计收集                                  │  │
│  │  • 释放文件系统层(RWLayer)                     │  │
│  │  • 清理网络链接                                  │  │
│  │  • 删除容器元数据                                │  │
│  │  • 删除容器目录                                  │  │
│  └──────────────────────────────────────────────────┘  │
│                      │                                  │
│                      ↓                                  │
│  ┌──────────────────────────────────────────────────┐  │
│  │ 4. 容器已删除                                    │  │
│  │                                                  │  │
│  │  • 进程:已终止                                   │  │
│  │  • Namespace:已销毁                             │  │
│  │  • 文件系统:已清理                               │  │
│  │  • 元数据:已删除                                 │  │
│  │                                                  │  │
│  │  关键:rm 会彻底删除容器,无法恢复!               │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
相关推荐
Apipi*12 分钟前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
运维行者_1 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
此时不提桶,更待何时2 小时前
06-14-A-Kafka集群运维与迁移实战详解
运维·kafka
IT研究所4 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
AIgorithmGEEK4 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2084 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)4 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6254 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
zhengqweasd4 小时前
机房托管服务器怎么选硬盘,机械盘和 SSD 托管场景差异
运维·服务器·github
sbjdhjd5 小时前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全