mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 16:37:34 +00:00
Refine Docker concepts
This commit is contained in:
@@ -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 容器的隔离性
|
||||
|
||||
Reference in New Issue
Block a user