当前位置: 首页 > news >正文

Docker 网络——AI教你学Docker

1.5 Docker 网络详解

Docker 网络是容器化部署中的重要组成部分,决定了容器与容器、容器与主机、容器与外部世界的通信方式。理解 Docker 网络模型,有助于灵活、安全地设计和管理应用架构。

一、Docker 网络的基本概念

  • 网络命名空间:每个容器拥有独立的网络命名空间,实现网络隔离。
  • 虚拟网卡(veth pair):容器与主机之间通过虚拟网卡对连接,主机一端连到桥接网络,容器一端作为 eth0。
  • 网络驱动(Network Driver):Docker 支持多种网络驱动,不同驱动决定容器网络的实现方式和能力。

二、Docker 支持的网络类型(驱动)

1. bridge(桥接网络,默认)

  • 说明:适用于单主机容器互联。
  • 特点
    • 容器自动分配私有 IP,通过网桥(默认 docker0)与主机通信。
    • 容器间可直接通信,外部访问需端口映射。
    • 可自定义 bridge 网络,支持自动 DNS 服务发现。
  • 使用场景:开发测试环境、单机多服务部署。

2. host(主机网络)

  • 说明:容器直接复用宿主机的网络栈。
  • 特点
    • 容器没有独立的网络命名空间。
    • 容器内端口与主机共享,端口冲突风险高。
    • 性能高,无 NAT 转发,网络延迟低。
  • 使用场景:性能敏感、需广播/组播、简单容器化脚本。

3. none(无网络)

  • 说明:容器启动时不配置任何网络,仅有 lo 回环接口,完全隔离。
  • 使用场景:纯计算、全隔离、无需通信场合。

4. overlay(覆盖网络)

  • 说明:实现多主机间容器互联,需 Docker Swarm/Kubernetes 集群支持。
  • 特点
    • 通过 VXLAN 技术,容器可跨物理主机通信。
    • 内置加密、服务发现。
  • 使用场景:分布式部署、微服务集群、云原生应用。

5. macvlan

  • 说明:将物理网卡的一个 MAC 地址分配给容器,使其获得和主机同一网段的独立 IP。
  • 特点
    • 容器表现为局域网内的独立主机,直接与内网设备通信。
  • 使用场景:容器需直接暴露在局域网、接入传统网络设备(如数据库、打印机)。

6. container(与其他容器共享网络)

  • 说明:一个容器与另一个容器共享网络命名空间。
  • 应用场景:sidecar 模式、进程监控等。

三、Docker 网络的管理与配置

1. 查看与管理网络

docker network ls                         # 查看所有网络
docker network inspect <网络名>           # 查看网络详情
docker network create <选项> <网络名>     # 创建自定义网络
docker network rm <网络名>                # 删除网络

2. 创建自定义 bridge 网络

  • 支持服务自动发现、IP 地址指定、子网规划等高级功能。
docker network create --driver bridge --subnet 172.28.0.0/16 mybridge
docker run --network mybridge --name app1 ...
docker run --network mybridge --name app2 ...
# app1、app2 可相互通过容器名访问

3. 容器加入/离开网络

docker network connect mybridge mycontainer
docker network disconnect mybridge mycontainer

四、端口映射与外部访问

  • 端口映射:将主机端口映射到容器端口,外部可通过主机访问容器。
docker run -p 8080:80 nginx
# 访问主机8080端口,相当于访问容器80端口
  • 多端口映射/协议指定
docker run -p 8080:80 -p 8443:443/tcp ...

五、网络隔离与安全

  • 网络隔离:不同自定义网络互相隔离,容器间默认不可跨网络访问。
  • 防火墙规则:可结合 host 防火墙(如 iptables、firewalld)强化安全。
  • 安全建议
    • 只开放必要端口
    • 生产环境避免用 host 网络
    • 使用 overlay 网络自带加密通信
    • 合理设置容器间访问策略

六、网络高级用法

1. 多网络绑定

  • 一个容器可同时属于多个网络,便于实现跨网络通信。
docker network create net1
docker network create net2
docker run -d --name myapp --network net1 nginx
docker network connect net2 myapp

2. 网络别名

  • 自定义网络下可为容器设置别名,便于服务发现和 DNS 解析。
docker run --network mynet --network-alias db ...

七、网络常见故障与排查

  • 容器无法互通:检查网络是否为同一 bridge/overlay,自定义网络下容器名能做 DNS 解析。
  • 端口冲突:host 网络或端口映射时主机端口被占用。
  • 外部访问失败:检查端口映射、防火墙策略。

八、参考资料

  • Docker 官方网络文档
  • Docker 网络驱动详解
http://www.lqws.cn/news/528949.html

相关文章:

  • Vue 2 项目中内嵌 md 文件
  • Windows 下使用 nvm 管理 Node.js 多版本 —— 完整指南
  • 动态规划之01背包问题
  • 互联网医院系统源码解析:如何实现视频问诊、电子处方等核心功能?
  • 焊接与热切割作业证用途有哪些
  • 【SpringBoot】Spring Boot + RESTful 技术实战指南
  • 数据结构进阶 - 第二章 线性表
  • 缓存与加速技术实践-MongoDB数据库应用
  • React:利用计算属性名特点更新表单值
  • Spark SQL to_json 函数介绍
  • LLM复杂记忆存储-多会话隔离案例实战
  • Flink Oracle CDC 总结
  • Spring 框架
  • Python+selenium自动化生成测试报告
  • 在一个成熟产品中,如何设计数据库架构以应对客户字段多样化,确保系统的可维护性、可扩展性和高性能。
  • 智慧城市云计算大数据中心项目设计方案
  • 技术调研:时序数据库(一)
  • ASP.NET Core Web API 实现 JWT 身份验证
  • 【人工智能与机器人研究】基于ROS的多传感器融合巡检机器人系统研究
  • Android 16系统源码_无障碍辅助(二)Android 的无障碍框架
  • 人工智能中的集成学习:从原理到实战
  • PDF Kit 使用示例(HarmonyOS)
  • 跟着AI学习C#之项目实战-电商平台 Day1
  • Web3解读:解锁去中心化网络的潜力
  • MessagesPlaceholder和多轮AI翻译助手实战
  • 【强化学习】《Reinforcement Learning: An Introduction》(第二版)概述
  • 杰理-可视化sdk-耳机灯效添加
  • Windows中使用createdump创建进程dump文件的基本用法
  • 开疆智能CCLinkIE转ModbusTCP网关连接PCA3200电能表配置案例
  • 人工智能编程三大核心流程详解--机器学习、神经网络、NLP自然语言处理