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 会彻底删除容器,无法恢复!               │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
相关推荐
CV_J3 小时前
安装kibana
java·elasticsearch·spring cloud·docker·容器
kaoa0004 小时前
Linux入门攻坚——62、memcached使用入门
linux·运维·memcached
Wzx1980124 小时前
doker深学习
学习·docker
model20055 小时前
alibaba linux3 系统盘清理
linux·运维·服务器
WG_175 小时前
Linux:动态库加载总结_进程间通信+进程池 + 进程IPC(27/28/29/30/31/32)
linux·运维·服务器
好奇心害死薛猫5 小时前
docker_tailscale
docker·容器
一只懒鱼a5 小时前
docker部署nacos (版本2.3.2)
运维·docker
信创天地8 小时前
国产堡垒机部署实战:以奇安信、天融信为例构建运维安全三重防线
运维·安全
呉師傅9 小时前
东芝3525AC彩色复印机CC219测试页打印方法【实际操作】
运维·网络·windows·计算机外设·电脑
宴之敖者、10 小时前
Linux——权限
linux·运维·服务器