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 会彻底删除容器,无法恢复!               │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
相关推荐
fetasty8 小时前
rustfs加picgo图床搭建
docker
蝎子莱莱爱打怪1 天前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
碳基沙盒1 天前
OpenClaw 多 Agent 配置实战指南
运维
小p2 天前
docker学习7:docker 容器的通信方式
docker
小p2 天前
docker学习5:提升Dockerfile水平的5个技巧
docker
小p2 天前
docker学习3:docker是怎么实现的?
docker
小p3 天前
docker学习: 2. 构建镜像Dockerfile
docker
小p4 天前
docker学习: 1. docker基本使用
docker
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀4 天前
Docker部署Nacos
docker·容器