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