mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-24 10:45:23 +00:00
Add blank lines before headers
This commit is contained in:
@@ -53,6 +53,7 @@ PID Namespace 负责进程 ID 的隔离,使得容器内的进程彼此不可
|
||||
#### PID 隔离效果
|
||||
|
||||
```bash
|
||||
|
||||
## 宿主机上查看进程
|
||||
|
||||
$ ps aux | grep nginx
|
||||
@@ -154,6 +155,7 @@ UTS Namespace 主要用于隔离主机名和域名。
|
||||
#### UTS 隔离效果
|
||||
|
||||
```bash
|
||||
|
||||
## 宿主机
|
||||
|
||||
$ hostname
|
||||
@@ -233,6 +235,7 @@ flowchart LR
|
||||
#### 实验 1:UTS Namespace
|
||||
|
||||
```bash
|
||||
|
||||
## 创建新的 UTS namespace 并启动 shell
|
||||
|
||||
$ sudo unshare --uts /bin/bash
|
||||
@@ -253,6 +256,7 @@ my-server
|
||||
#### 实验 2:PID Namespace
|
||||
|
||||
```bash
|
||||
|
||||
## 创建新的 PID 和 MNT namespace
|
||||
|
||||
$ sudo unshare --pid --mount --fork /bin/bash
|
||||
@@ -272,6 +276,7 @@ root 8 0.0 0.0 10072 3200 pts/0 R+ 10:00 0:00 ps aux
|
||||
#### 实验 3:NET Namespace
|
||||
|
||||
```bash
|
||||
|
||||
## 创建新的网络 namespace
|
||||
|
||||
$ sudo unshare --net /bin/bash
|
||||
|
||||
@@ -62,6 +62,7 @@ Docker 提供了丰富的参数来配置容器的资源限制,主要包括内
|
||||
#### 内存限制
|
||||
|
||||
```bash
|
||||
|
||||
## 限制容器最多使用 512MB 内存
|
||||
|
||||
$ docker run -m 512m myapp
|
||||
@@ -85,6 +86,7 @@ $ docker run --memory-reservation 256m myapp
|
||||
#### CPU 限制
|
||||
|
||||
```bash
|
||||
|
||||
## 限制使用 1.5 个 CPU 核心
|
||||
|
||||
$ docker run --cpus=1.5 myapp
|
||||
@@ -108,6 +110,7 @@ $ docker run --cpu-shares=512 myapp
|
||||
#### 磁盘 I/O 限制
|
||||
|
||||
```bash
|
||||
|
||||
## 限制设备写入速度为 10MB/s
|
||||
|
||||
$ docker run --device-write-bps /dev/sda:10mb myapp
|
||||
@@ -124,6 +127,7 @@ $ docker run --device-write-iops /dev/sda:100 myapp
|
||||
#### 进程数限制
|
||||
|
||||
```bash
|
||||
|
||||
## 限制最多 100 个进程
|
||||
|
||||
$ docker run --pids-limit=100 myapp
|
||||
@@ -134,6 +138,7 @@ $ docker run --pids-limit=100 myapp
|
||||
### 12.3.5 查看容器资源使用
|
||||
|
||||
```bash
|
||||
|
||||
## 实时监控所有容器的资源使用
|
||||
|
||||
$ docker stats
|
||||
@@ -157,6 +162,7 @@ $ docker inspect mycontainer --format '{{json .HostConfig}}' | jq
|
||||
#### 内存超限
|
||||
|
||||
```bash
|
||||
|
||||
## 启动限制 100MB 内存的容器
|
||||
|
||||
$ docker run -m 100m stress --vm 1 --vm-bytes 200M
|
||||
@@ -175,14 +181,17 @@ abc123 Exited (137) 5 seconds ago hopeful_darwin
|
||||
#### CPU 限制验证
|
||||
|
||||
```bash
|
||||
|
||||
## 不限制 CPU
|
||||
|
||||
$ docker run --rm stress --cpu 4
|
||||
|
||||
## 占满所有 CPU
|
||||
|
||||
## 限制为 1 个核心
|
||||
|
||||
$ docker run --rm --cpus=1 stress --cpu 4
|
||||
|
||||
## 只能使用约 100% CPU(1 个核心)
|
||||
|
||||
...
|
||||
@@ -215,10 +224,12 @@ Docker 19.03+ 默认优先使用 cgroups v2(如果系统支持),提供更
|
||||
#### 检查系统使用的版本
|
||||
|
||||
```bash
|
||||
|
||||
## 查看 cgroup 版本
|
||||
|
||||
$ mount | grep cgroup
|
||||
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime)
|
||||
|
||||
## 如果显示 cgroup2 表示 v2
|
||||
|
||||
## 或者
|
||||
@@ -257,6 +268,7 @@ services:
|
||||
#### 1. 始终设置内存限制
|
||||
|
||||
```bash
|
||||
|
||||
## 防止 OOM 影响宿主机
|
||||
|
||||
$ docker run -m 1g myapp
|
||||
@@ -271,6 +283,7 @@ $ docker run --cpus=2 --cpu-shares=2048 critical-app
|
||||
#### 3. 监控资源使用
|
||||
|
||||
```bash
|
||||
|
||||
## 配合 Prometheus + cAdvisor 监控
|
||||
|
||||
$ docker run -d --name cadvisor \
|
||||
|
||||
@@ -112,6 +112,7 @@ Docker 的存储驱动经历了从早期各式各样的机制(如 aufs, device
|
||||
#### 查看当前存储驱动与后端
|
||||
|
||||
```bash
|
||||
|
||||
## 查看默认存储驱动 (Storage Driver)
|
||||
$ docker info | grep "Storage Driver"
|
||||
Storage Driver: overlay2
|
||||
@@ -161,6 +162,7 @@ flowchart TD
|
||||
### 12.4.6 查看镜像层
|
||||
|
||||
```bash
|
||||
|
||||
## 查看镜像的层信息
|
||||
|
||||
$ docker history nginx:alpine
|
||||
@@ -192,6 +194,7 @@ $ docker inspect nginx:alpine --format '{{json .GraphDriver.Data}}' | jq
|
||||
#### 1. 减少镜像层数
|
||||
|
||||
```docker
|
||||
|
||||
## ❌ 每条命令创建一层
|
||||
|
||||
RUN apt-get update
|
||||
|
||||
Reference in New Issue
Block a user