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

@@ -18,6 +18,7 @@ Docker 容器的 DNS 配置有两种情况:
这是 Docker 网络最强大的功能之一在自定义网络中容器可以通过 名字 找到彼此而不需要知道对方的 IP (因为 IP 可能会变)
```bash
## 1. 创建自定义网络
$ docker network create mynet

View File

@@ -17,6 +17,7 @@
使用 `docker network create` 命令可以创建自定义网络
```bash
## 创建网络
$ docker network create mynet
@@ -31,6 +32,7 @@ $ docker network inspect mynet
启动容器时通过 `--network` 参数指定连接的网络
```bash
## 启动容器并连接到自定义网络
$ docker run -d --name web --network mynet nginx
@@ -63,6 +65,7 @@ flowchart LR
以下是 Docker 网络管理中常用的命令
```bash
## 列出网络
$ docker network ls

View File

@@ -7,6 +7,7 @@
同一自定义网络内的容器可以直接通过容器名通信这是推荐的容器互联方式
```bash
## 创建网络
$ docker network create app-net
@@ -26,6 +27,7 @@ $ docker run -d --name app --network app-net myapp
一个容器可以同时连接到多个网络这对于需要跨网络通信的中间件容器特别有用
```bash
## 启动容器
$ docker run -d --name multi-net-container --network frontend nginx
@@ -44,6 +46,7 @@ $ docker inspect multi-net-container --format '{{json .NetworkSettings.Networks}
`--link` Docker 早期用于容器互联的方式**已经被废弃**不建议在新项目中使用请使用自定义网络替代
```bash
## 旧方式(不推荐)
$ docker run --link db:database myapp

View File

@@ -30,6 +30,7 @@ Docker 提供了多种方式来指定端口映射。
使用 `-p <宿主机端口>:<容器端口>` 格式
```bash
## 将宿主机的 8080 端口映射到容器的 80 端口
$ docker run -d -p 8080:80 nginx
@@ -103,6 +104,7 @@ abc123456 nginx 0.0.0.0:8080->80/tcp web
如果不希望对外暴露 (例如数据库服务)应绑定到 `127.0.0.1`
```bash
## 仅允许本机访问
$ docker run -d -p 127.0.0.1:3306:3306 mysql
@@ -134,6 +136,7 @@ Docker 使用 `docker-proxy` 进程 (用户态) 或 `iptables` DNAT 规则 (内
当流量到达宿主机端口时iptables 规则将其目标地址修改为容器 IP 并转发
```bash
## 简化的 iptables 逻辑
iptables -t nat -A DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:80

View File

@@ -7,6 +7,7 @@ Docker 网络提供了天然的隔离能力,不同网络之间的容器默认
不同网络之间默认隔离容器只能与同一网络中的容器直接通信
```bash
## 创建两个网络
$ docker network create frontend
@@ -42,6 +43,7 @@ ping: db: Name or service not known
如果确实需要某个容器跨网络通信可以将其同时连接到多个网络
```bash
## 创建一个中间件容器,连接到两个网络
$ docker run -d --name api --network frontend myapi

View File

@@ -35,6 +35,7 @@ veth 对
**Docker Swarm 模式下的 Overlay 网络**
```bash
# 初始化 Swarm创建集群
docker swarm init
@@ -61,6 +62,7 @@ docker service ps web
**单机 Overlay 网络模拟Linux 容器**
```bash
# 创建自定义 overlay 网络
docker network create --driver overlay custom-overlay
@@ -79,6 +81,7 @@ docker network inspect custom-overlay
#### Overlay 网络性能优化
```bash
# 调整 MTUMaximum Transmission Unit避免分片
# VXLAN 开销 50 字节,物理 MTU 1500建议设置为 1450
docker network create --driver overlay \
@@ -122,6 +125,7 @@ networks:
Calico 使用 BGP 协议进行路由支持网络策略和 eBPF 加速
```yaml
# Kubernetes 中安装 Calico
apiVersion: v1
kind: ConfigMap
@@ -156,6 +160,7 @@ data:
Flannel 提供简单的 overlay 网络实现适合小到中等规模的集群
```bash
# 安装 Flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
@@ -202,6 +207,7 @@ EOF
Cilium 使用 eBPF 在内核级别实现网络策略和可观测性性能优异
```bash
# 安装 Cilium
helm repo add cilium https://helm.cilium.io
helm install cilium cilium/cilium \
@@ -222,6 +228,7 @@ helm upgrade cilium cilium/cilium \
Weave 提供简单的跨主机通信支持加密和多播
```bash
# Docker 中使用 Weave 网络
docker run -d --name weave \
--net=host \
@@ -269,6 +276,7 @@ DNS 响应 → 容器缓存 → 应用
**在运行时指定 DNS**
```bash
# 单个容器
docker run -d \
--dns 8.8.8.8 \
@@ -334,6 +342,7 @@ networks:
**使用 Docker 内建 DNS 的服务发现**
```bash
# 创建自定义网络
docker network create mynet
@@ -343,6 +352,7 @@ docker run -d --name db --network mynet postgres:latest
# 在其他容器中通过服务名访问
docker run -it --network mynet busybox sh
# ping web # 自动解析到 web 容器 IP
# ping db # 自动解析到 db 容器 IP
```
@@ -377,6 +387,7 @@ services:
#### DNS 性能优化
```bash
# 检查 DNS 延迟
time docker exec <container> nslookup www.example.com
@@ -494,6 +505,7 @@ spec:
```yaml
---
# 拒绝所有默认
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
@@ -506,6 +518,7 @@ spec:
- Egress
---
# Frontend 容器策略
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
@@ -550,6 +563,7 @@ spec:
port: 53
---
# API 容器策略
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
@@ -590,6 +604,7 @@ spec:
port: 53
---
# 数据库容器策略
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
@@ -660,6 +675,7 @@ spec:
#### 选择建议
```bash
# 1. 开发环境:使用 Bridge 网络
docker network create my-app
docker compose up # 默认使用 bridge
@@ -682,6 +698,7 @@ helm install cilium cilium/cilium --namespace kube-system
**常见网络问题诊断**
```bash
# 1. 容器无法访问外部网络
docker exec <container> ping 8.8.8.8
docker exec <container> cat /etc/resolv.conf