mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 00:49:30 +00:00
Fix and improve
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
## 14.2 命名空间
|
||||
|
||||
命名空间(Namespace)是 Linux 内核的一个强大特性,为容器提供了隔离的运行环境。
|
||||
|
||||
### 什么是 Namespace
|
||||
@@ -39,11 +37,11 @@ Linux 内核提供了以下几种 Namespace,Docker 容器使用了全部:
|
||||
|
||||
PID Namespace 负责进程 ID 的隔离,使得容器内的进程彼此不可见。
|
||||
|
||||
#### 作用
|
||||
#### PID 的作用
|
||||
|
||||
隔离进程 ID,让每个容器有自己的进程编号空间。
|
||||
|
||||
#### 效果
|
||||
#### PID 隔离效果
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -62,7 +60,7 @@ PID USER COMMAND
|
||||
2 root nginx: worker process
|
||||
```
|
||||
|
||||
#### 关键点
|
||||
#### PID 关键点
|
||||
|
||||
- 容器内的 PID 1 进程特殊重要——它是容器的主进程,退出则容器停止
|
||||
- 容器内无法看到宿主机或其他容器的进程
|
||||
@@ -74,13 +72,11 @@ PID USER COMMAND
|
||||
|
||||
NET Namespace 负责网络栈的隔离,包括网卡、路由表和 iptables 规则等。
|
||||
|
||||
#### 作用
|
||||
#### NET 的作用
|
||||
|
||||
隔离网络栈,每个容器拥有独立的网络环境。
|
||||
|
||||
#### 效果
|
||||
|
||||
具体内容如下:
|
||||
#### NET 隔离效果
|
||||
|
||||
```
|
||||
宿主机 容器
|
||||
@@ -91,7 +87,7 @@ NET Namespace 负责网络栈的隔离,包括网卡、路由表和 iptables
|
||||
└─────────────────────┘ └─────────────────────┘
|
||||
```
|
||||
|
||||
#### 关键点
|
||||
#### NET 关键点
|
||||
|
||||
- 每个容器有独立的网卡、IP、路由表、iptables 规则
|
||||
- 多个容器可以监听相同端口(如都监听 80)
|
||||
@@ -103,13 +99,11 @@ NET Namespace 负责网络栈的隔离,包括网卡、路由表和 iptables
|
||||
|
||||
MNT Namespace 负责文件系统挂载点的隔离,确保容器看到独立的文件系统视图。
|
||||
|
||||
#### 作用
|
||||
#### MNT 的作用
|
||||
|
||||
隔离文件系统挂载点,每个容器有自己的根目录。
|
||||
|
||||
#### 效果
|
||||
|
||||
具体内容如下:
|
||||
#### MNT 隔离效果
|
||||
|
||||
```
|
||||
宿主机文件系统: 容器内看到的:
|
||||
@@ -138,11 +132,11 @@ MNT Namespace 负责文件系统挂载点的隔离,确保容器看到独立的
|
||||
|
||||
UTS Namespace 主要用于隔离主机名和域名。
|
||||
|
||||
#### 作用
|
||||
#### UTS 的作用
|
||||
|
||||
隔离主机名和域名,让每个容器可以有自己的主机名。
|
||||
|
||||
#### 效果
|
||||
#### UTS 隔离效果
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -166,7 +160,7 @@ UTS = "UNIX Time-sharing System",是历史遗留的名称。
|
||||
|
||||
IPC Namespace 用于隔离进程间通信资源,如 System V IPC 和 POSIX 消息队列。
|
||||
|
||||
#### 作用
|
||||
#### IPC 的作用
|
||||
|
||||
隔离 System V IPC 和 POSIX 消息队列。
|
||||
|
||||
@@ -176,7 +170,7 @@ IPC Namespace 用于隔离进程间通信资源,如 System V IPC 和 POSIX 消
|
||||
- 消息队列(message queues)
|
||||
- 共享内存(shared memory)
|
||||
|
||||
#### 关键点
|
||||
#### IPC 关键点
|
||||
|
||||
- 同一容器内的进程可以通过 IPC 通信
|
||||
- 不同容器的进程无法通过 IPC 通信(除非显式共享)
|
||||
@@ -187,13 +181,11 @@ IPC Namespace 用于隔离进程间通信资源,如 System V IPC 和 POSIX 消
|
||||
|
||||
USER Namespace 允许将容器内的用户 ID 映射到宿主机的不同用户 ID。
|
||||
|
||||
#### 作用
|
||||
#### USER 的作用
|
||||
|
||||
隔离用户和组 ID,实现权限隔离。
|
||||
|
||||
#### 效果
|
||||
|
||||
具体内容如下:
|
||||
#### USER 隔离效果
|
||||
|
||||
```
|
||||
容器内 宿主机
|
||||
@@ -305,5 +297,5 @@ Namespace 提供了隔离但不是安全边界:
|
||||
|
||||
- [控制组(Cgroups)](14.3_cgroups.md):资源限制机制
|
||||
- [联合文件系统](14.4_ufs.md):分层存储的实现
|
||||
- [安全](../security/README.md):容器安全实践
|
||||
- [安全](../11_ops/security/README.md):容器安全实践
|
||||
- [Linux Namespace 官方文档](https://man7.org/linux/man-pages/man7/namespaces.7.html)
|
||||
|
||||
@@ -172,8 +172,7 @@ abc123 Exited (137) 5 seconds ago hopeful_darwin
|
||||
|
||||
## 137 = 128 + 9,表示被 SIGKILL(9) 杀死
|
||||
|
||||
具体内容如下:
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
#### CPU 限制验证
|
||||
@@ -191,8 +190,7 @@ $ docker run --rm stress --cpu 4
|
||||
$ docker run --rm --cpus=1 stress --cpu 4
|
||||
## 只能使用约 100% CPU(1 个核心)
|
||||
|
||||
具体内容如下:
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
---
|
||||
@@ -299,5 +297,5 @@ $ docker run -d --name cadvisor \
|
||||
### 延伸阅读
|
||||
|
||||
- [命名空间](14.2_namespace.md):资源隔离
|
||||
- [安全](../security/README.md):容器安全概述
|
||||
- [安全](../11_ops/security/README.md):容器安全概述
|
||||
- [Docker Stats](../05_container/README.md):监控容器资源
|
||||
|
||||
@@ -37,8 +37,6 @@ Docker 选择联合文件系统作为其存储驱动,主要基于以下几个
|
||||
|
||||
#### 1. 镜像分层复用
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```
|
||||
nginx:alpine myapp:latest
|
||||
│ │
|
||||
@@ -202,8 +200,6 @@ $ docker inspect nginx:alpine --format '{{json .GraphDriver.Data}}' | jq
|
||||
|
||||
#### 1. 减少镜像层数
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```docker
|
||||
## ❌ 每条命令创建一层
|
||||
|
||||
|
||||
Reference in New Issue
Block a user