容器网络:Docker网络模式与Kubernetes网络

📅 2026/7/5 11:07:26 👁️ 阅读次数 📝 编程学习
容器网络:Docker网络模式与Kubernetes网络

容器网络:Docker网络模式与Kubernetes网络

大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊容器网络这个重要话题。作为一个全栈开发者,理解容器网络是构建分布式系统的关键。今天就来分享一下Docker网络模式和Kubernetes网络的实战经验。

容器网络概述

Docker网络模式

模式说明特点
bridge默认模式,容器间隔离独立网络空间
host使用宿主机网络高性能,无隔离
container共享其他容器网络容器间共享
none无网络完全隔离

Kubernetes网络模型

Pod网络 → Pod间通信 Service网络 → 服务发现 Ingress → 外部访问 Network Policy → 网络策略

Docker网络配置

创建自定义网络

# 创建bridge网络 docker network create --driver bridge my-network # 创建overlay网络(用于多主机) docker network create --driver overlay --attachable my-overlay # 查看网络 docker network ls # 查看网络详情 docker network inspect my-network

容器连接网络

# 运行容器时指定网络 docker run --network my-network --name my-container nginx # 连接已有容器到网络 docker network connect my-network existing-container # 断开容器与网络 docker network disconnect my-network existing-container

网络配置示例

# docker-compose.yml version: '3.7' services: web: image: nginx networks: - frontend - backend api: image: node:18 networks: - backend db: image: postgres networks: - backend networks: frontend: driver: bridge backend: driver: bridge internal: true

Kubernetes网络

Service配置

apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376 type: ClusterIP

Ingress配置

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: my-service port: number: 80

Network Policy

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all spec: podSelector: {} policyTypes: - Ingress - Egress

实战案例:网络调试

Docker网络调试

# 查看容器网络信息 docker inspect my-container # 进入容器检查网络 docker exec -it my-container /bin/bash ping google.com curl http://api-service # 使用busybox测试网络 docker run --rm busybox ping -c 3 google.com

Kubernetes网络调试

# 检查Pod网络 kubectl exec -it my-pod -- ping api-service # 检查Service kubectl describe service my-service # 检查Ingress kubectl describe ingress my-ingress

最佳实践

1. 使用Network Policy

# 只允许特定Pod访问 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-api spec: podSelector: matchLabels: app: api ingress: - from: - podSelector: matchLabels: app: web

2. 使用Service Mesh

# 使用Istio进行流量管理 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: my-service spec: hosts: - my-service http: - route: - destination: host: my-service subset: v1 weight: 90 - destination: host: my-service subset: v2 weight: 10

总结

容器网络是容器化部署的核心。通过理解Docker和Kubernetes网络模型,可以构建高效、安全的网络架构。

我的鬃狮蜥Hash对网络也有自己的理解——它总是能感知周围的环境,这也许就是自然界的"网络通信"吧!

如果你对容器网络有任何问题,欢迎留言交流!我是欧阳瑞,极客之路,永无止境!


技术栈:容器网络 · Docker · Kubernetes