Docker 网络是 Docker 容器技术中一项核心功能,它为容器提供灵活、安全且可管理的网络环境,使得容器之间、容器与宿主机以及其他网络实体(如其他主机、外部服务等)能够有效地进行通信。
提供了多种模式可以定制化的为每个容器提供不同的网络模式
- bidge(桥接模式)
- 当在宿主机上安装 Docker 后,系统会自动创建一个名为 docker0 的虚拟网桥(也称为“网卡”)。这个网桥本质上是一个软件层面的虚拟交换机,用于连接容器网络与宿主机网络。所有新建的、未加入自定义网络的 Docker 容器,默认情况下都会通过 veth pair 技术连接到 docker0 网桥。
- host模式
- Host 模式是 Docker 提供的一种网络模式,它改变了容器与宿主机之间的网络隔离状态,使得容器直接使用宿主机的网络栈,共享宿主机的网络接口、IP 地址和端口资源。
- none模式
- None 模式是 Docker 提供的一种特殊的网络模式,它将容器置于一个完全隔离的网络环境中,即不连接到任何网络,包括默认的 bridge 网络。
- container模式
- 允许新创建的容器与一个已存在的容器共享相同的Network Namespace。在这种模式下,新容器并不独立地创建自己的网络接口、配置IP地址和网络路由,而是直接复用指定容器的网络资源。
查看docker中存在的网卡
docker network ls //查看docker中存在的网卡
自定义网络模式
docker network create --driver bridge --subnet 192.168.10.0/24 --gateway 192.168.10.1 now_network
//基于bridg来自定义网卡,网段为192.168.10.0/24,网关为192.168.10.1,名称为now_network
docker run -d -P --name nginx01 --net now_network nginx
不同网络模式不能互通需要执行
docker network connect now_network nginx01
//为nginx01添加一张now_network模式的网卡
创建自定义的网络模式
docker network create -d bridge my-net
#docker network create: 这是Docker命令的一部分,用于创建一个新的网络环境。
#-d 或 --driver: 后面跟着的是网络类型。在这个例子中,bridge 指定了所创建的网络类型为桥接网络(bridge network)。桥接网络是Docker中默认的网络类型之一,它为Docker容器提供了一种隔离的网络环境,每个容器在该网络上都有自己的IP地址,并且可以相互通信,但与宿主机网络是隔离的。
#bridge: 指定网络类型为桥接。这是最常见的网络模式,适用于单个Docker守护进程环境中的容器间通信。
#my-net: 自定义的网络名称。你可以根据需要替换这个名字,以便于后续引用和管理这个网络。