Refine Docker concepts

This commit is contained in:
yeasy
2026-04-21 14:39:41 -07:00
parent b3d1508310
commit 4b93651989
5 changed files with 29 additions and 41 deletions
+12 -10
View File
@@ -26,11 +26,11 @@ flowchart TD
C1["• 独立进程空间<br/>• 独立网络环境<br/>• 独立文件系统<br/>• 独立用户空间"]
end
```
这种隔离通过 Linux 内核的 **Namespace** 技术实现的具体表现为
这种隔离主要通过 Linux 内核的 **Namespace** 实现资源限制通常与 **cgroups** 配合具体表现为
- **进程空间**容器看不到宿主机上的其他进程
- **网络**容器拥有独立的 IP端口等网络资源
- **网络**在默认网络模式下容器通常拥有独立的网络命名空间并可分配独立 IP使用 `host` `container:` 等模式时则例外
- **文件系统**容器拥有独立的 root 目录
- **用户**容器内的 root 用户不等于宿主机的 root 用户
- **用户**默认情况下容器内的 `root` 仍是 `uid 0`但通常只拥有受限 capabilities如果启用 `userns-remap` rootless 等机制还会进一步映射为宿主机上的低权限用户
### 2.2.3 容器 vs 虚拟机核心区别
@@ -68,10 +68,10 @@ flowchart TD
```
| 特性 | 容器 | 虚拟机 |
|------|------|--------|
| **隔离级别** | 进程 (Namespace)| 硬件级 (Hypervisor)|
| **启动时间** | 秒级 (甚至毫秒)| 分钟级 |
| **资源占用** | MB 级别 | GB 级别 |
| **性能损耗** | 几乎为零 | 5-20% |
| **隔离级别** | 操作系统 (Namespaces/cgroups) | 硬件虚拟化 (Hypervisor) |
| **启动时间** | 通常更快 | 通常更慢 |
| **资源占用** | 通常更低 | 通常更高 |
| **运行开销** | 通常更接近原生 | 通常有更高虚拟化开销 |
| **内核** | 共享宿主机内核 | 各自独立内核 |
### 2.2.4 容器的存储层
@@ -147,7 +147,7 @@ $ docker run -v /host/path:/container/path nginx
### 2.2.5 容器的生命周期
掌握容器的生命周期对于管理和调试 Docker 应用非常重要如图 2-1 所示容器会经历从创建到删除的完整状态流转
掌握容器的生命周期对于管理和调试 Docker 应用非常重要如图 2-1 所示这里先聚焦最常见的创建运行暂停停止和删除流转Docker CLI 中还可能看到 `restarting``removing``dead` 等状态
```mermaid
stateDiagram-v2
@@ -166,7 +166,7 @@ stateDiagram-v2
```
2-1容器生命周期状态流转图
#### 常用生命周期命令
常用生命周期命令如下
```bash
## 创建并启动容器(最常用)
@@ -211,10 +211,12 @@ $ docker rm -f abc123 # 强制删除运行中的容器
$ docker run ubuntu
## 这个容器会持续运行(nginx 作为守护进程持续运行)
## 这个容器会持续运行(官方 nginx 镜像让 nginx 在前台运行)
$ docker run nginx
```
官方 `nginx` 镜像默认使用 `nginx -g 'daemon off;'`让主进程保持在前台运行这样容器才会持续处于运行状态
详细解释请参考[后台运行](../05_container/5.2_daemon.md)章节
### 2.2.7 容器的隔离性