Add blank lines before headers

This commit is contained in:
yeasy
2026-03-21 12:57:51 -07:00
parent 0648f63979
commit 312f8fea42
76 changed files with 411 additions and 0 deletions

View File

@@ -48,6 +48,7 @@
**基本使用**
```bash
# 实时监控所有运行中的容器
docker stats
@@ -89,6 +90,7 @@ done
**性能指标解读**
```bash
# CPU % 超过 80%:需要增加 CPU 限制或优化应用
# MEM % 接近 100%:容器即将 OOM需要增加内存或排查内存泄漏
# 如果 NET I/O 中 dropped 为非零:网络拥塞或丢包
@@ -132,6 +134,7 @@ networks:
** cAdvisor 提取指标**
```bash
# 获取所有容器的 JSON 格式性能数据
curl http://localhost:8080/api/v1.3/machine | jq .
@@ -145,6 +148,7 @@ curl http://localhost:8080/api/v1.3/docker/abc123/ | jq '.stats[-1]'
** Prometheus 集成**
```yaml
# prometheus.yml 配置
global:
scrape_interval: 15s
@@ -259,6 +263,7 @@ scrape_configs:
**常用的 Prometheus 查询PromQL**
```text
# 容器 CPU 使用百分比
rate(container_cpu_usage_seconds_total[5m]) * 100
@@ -289,6 +294,7 @@ count(container_memory_usage_bytes) by (image)
#### OOM 问题诊断
```bash
# 检查容器是否因 OOM 被杀死
docker inspect <container_id> | grep OOMKilled
@@ -310,6 +316,7 @@ journalctl -u docker -n 100 | grep -i "oom"
**Python 应用内存泄漏检测**
```python
# Dockerfile
FROM python:3.11-slim
WORKDIR /app
@@ -321,6 +328,7 @@ CMD ["python", "-m", "memory_profiler", "app.py"]
```
```python
# app.py - 内存泄漏示例
from memory_profiler import profile
import tracemalloc
@@ -347,6 +355,7 @@ print(f"Peak: {peak / 1024 / 1024:.2f} MB")
**Java 应用内存分析**
```bash
# 在容器中启用 JVM 远程调试
docker run -e JAVA_OPTS="-Xmx512m -Xms256m -XX:+UseG1GC" \
-p 5005:5005 \
@@ -363,6 +372,7 @@ jstat -gc <pid> 1000 # 每秒采样一次
#### 内存限制最佳实践
```bash
# 为容器设置内存限制
docker run -m 512m --memory-swap 1g myapp:latest
@@ -386,6 +396,7 @@ services:
**内存超额提交Memory Overcommit**
```bash
# 在 Docker Compose 中区分限制和预留
# limits绝不能超过的最大值
# reservationsCompose 排期时的参考值
@@ -407,6 +418,7 @@ services:
**使用 dive 分析镜像层**
```bash
# 安装 dive
wget https://github.com/wagoodman/dive/releases/download/v0.11.0/dive_0.11.0_linux_amd64.deb
sudo apt install ./dive_0.11.0_linux_amd64.deb
@@ -420,6 +432,7 @@ dive myapp:latest
**使用 Dockerfile 分析工具**
```bash
# 安装 hadolint
curl https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64 -L -o hadolint
chmod +x hadolint
@@ -433,6 +446,7 @@ chmod +x hadolint
**Go 应用的最小化镜像构建**
```dockerfile
# Stage 1: 构建阶段
FROM golang:1.20-alpine AS builder
@@ -469,6 +483,7 @@ ENTRYPOINT ["/app"]
**Node.js 应用的多阶段构建**
```dockerfile
# Stage 1: 依赖安装
FROM node:18-alpine AS dependencies
@@ -494,6 +509,7 @@ WORKDIR /app
# 从依赖阶段复制 node_modules
COPY --from=dependencies /app/node_modules ./node_modules
# 从构建阶段复制构建产物
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package*.json ./
@@ -514,6 +530,7 @@ CMD ["node", "dist/index.js"]
**Python 应用的多阶段构建**
```dockerfile
# Stage 1: 构建阶段
FROM python:3.11-slim AS builder
@@ -550,6 +567,7 @@ CMD ["python", "app.py"]
#### 镜像体积优化检查清单
```bash
# 检查清单
□ 使用精简基础镜像Alpine、Distroless
□ 清理包管理器缓存apt-get clean、rm -rf /var/cache/*
@@ -585,6 +603,7 @@ RUN apt-get update && \
症状容器进程被无故杀死exit code 137
解决方案
```bash
# 增加内存限制
docker update -m 1g <container_id>
@@ -603,6 +622,7 @@ docker run -m 512m --memory-swap 1g myapp:latest
症状应用性能突然下降 CPU 使用率不高
诊断
```bash
# 查看 CPU 限流统计
docker exec <container_id> cat /sys/fs/cgroup/cpu/cpu.stat
@@ -615,6 +635,7 @@ docker update --cpus 2 <container_id>
诊断
```bash
# 进入容器检查网络状态
docker exec <container_id> ip -s link show