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 会彻底删除容器,无法恢复!               │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
相关推荐
旅僧42 分钟前
Ubantu docker环境配置(前置)
运维·docker·容器
vortex51 小时前
Linux日志轮转管理:logrotate 完全指南
linux·运维·服务器
“码”力全开1 小时前
解耦异构算力:基于 Docker 与边缘计算的 AI 视频管理平台,实现 GB28181/RTSP 统一接入与源码交付深度解析
人工智能·docker·边缘计算
条俐开水喉1 小时前
液冷服务器与U位资产管理的依存共生关系深度分析
运维·ai算力服务器·u位资产管理·液冷服务器
高旭的旭2 小时前
反向 SSH 隧道远程方案
运维·ssh
元启数宇2 小时前
机电设计AI不只是消防:给排水、暖通、强弱电如何进入自动化?
运维·人工智能·自动化
CHrisFC2 小时前
LIMS 系统 AI 建设路径:从自动化到智能化的演进之路
运维·人工智能·自动化
杰克逊的日记2 小时前
如何部署EDA工具及运维
运维·eda运维
码语智行2 小时前
常见nginx配置
运维·nginx
上海达策TECHSONIC2 小时前
零售ERP选型解析:SAP Business One 适配成长型零售企业的核心逻辑
大数据·运维·人工智能·云计算·运维开发·零售