Skip to content

docker 的网络 共有4种

  1. 默认桥接 bradge 与宿主机共享网络 docker 容器隔离性最好
    • 容器可以通过容器名称或 IP 地址相互通信。
    • 容器的 IP 地址由 Docker 自动分配
    • 默认桥接网络通常使用一个子网(如 172.17.0.0/16
    • 容器可以访问外部网络,但外部网络无法直接访问容器
    • 适用于简单的容器间通信,但不适合复杂的网络拓扑
bash
docker run --name tomcat  -d -p 8080:8080 tomcat
  1. host 占用 服务器 物理ip 和端口 会导致端口被占用 网络最优 与宿主机共享网络
  • 容器将直接绑定到宿主机的网络接口,没有额外的网络隔离
  • 容器的端口将直接映射到宿主机的端口
  • 容器可以直接访问宿主机的网络接口,无需通过 Docker 的网络桥接。
  • 适用于需要高性能网络通信的场景,例如高性能数据库或网络服务。
  • 适用于需要直接访问宿主机网络接口的场景。
bash

docker run --name tomcat2 -d  --network=host  tomcat
  1. none 无网络 模式 完全隔离,无法访问外部网络或与其他容器通信

  2. macvlan 网络允许容器直接连接到物理网络,就像它们是物理设备一样。

    • 容器将获得一个 MAC 地址,并直接连接到物理网络。
    • 容器可以直接与物理网络中的其他设备通信,而无需通过 Docker 的网络桥接。
    • 适用于需要直接接入物理网络的场景。
bash
##  创建 网络      子网     网关      网卡    网络名称
docker network create  -d macvlan --subnet=192.168.229.0/24  --gateway=192.168.229.1  -o parent=ens33 macvlan31

#  启动时  需要指定  ip  信息 端口全部暴露  无法用于大型网络

docker run --name tomcat  -itd --ip=192.168.229.130 --network=macvlan31  tomcat
docker run --name tomcat2  -itd --ip=192.168.229.131 --network=macvlan31  tomcat