详细介绍docker的network

Docker 的网络(Network)功能是容器化应用程序进行通信的关键部分,Docker 提供了多种网络模式,使容器能够相互通信,或者与外部世界进行交互。


1. Docker 网络的基本概念

Docker 使用 Linux 网络命名空间(Network Namespace)虚拟网络接口 来实现容器间的网络通信。默认情况下,每个容器都有自己的网络命名空间,并且可以选择不同的网络模式。


2. Docker 网络模式(Network Modes)

Docker 主要支持以下几种网络模式:

2.1 Bridge 网络(默认模式)

  • 特点
    • 适用于 单机部署 的容器。
    • 每个容器都会被分配到 Docker 的虚拟网桥(默认 docker0)。
    • 通过 内部 IP 进行通信,可以通过 docker network create 创建自定义的 bridge 网络,并分配子网。
  • 默认桥接网络(docker0)
    • docker network ls 查看默认桥接网络。
    • docker inspect <container_id> 查看容器 IP。
  • 自定义 bridge 网络
    docker network create --driver bridge my_bridge
    docker network connect my_bridge my_container
    
  • 适用场景
    • 需要多个容器通信,例如 微服务架构,但不想暴露在外部。

2.2 Host 网络

  • 特点
    • 容器与宿主机共享网络,容器的端口映射无效(-p 参数不会生效)。
    • 适用于 低延迟、高性能的网络应用,例如 DNS、Nginx 反向代理。
  • 使用方式
    docker run --network=host nginx
    
  • 适用场景
    • 高性能需求,如 Web