🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## docker network create - 如果您想在容器已经运行后将其添加到网络中,请使用docker network connect子命令。 ## 语法 ``` docker network create [OPTIONS] NETWORK options --attachable Enable manual container attachment --aux-address 网络驱动程序使用的辅助IPv4或IPv6地址 --config-from 从其中复制配置的网络 --config-only 创建一个只配置网络 --ingress 创建群路由网状网络 --internal 限制外部访问网络 --ipam-driver IP地址管理驱动程序 --ipam-opt 设置IPAM驱动程序特定选项 --ipv6 启用IPv6网络 --label 在网络上设置元数据 --opt , -o 设置驱动程序特定选项 --scope 控制网络的范围 --driver , -d 驱动程序来管理网络(默认:bridge)(Host、Bridge、Macvlan) --subnet 表示网络段的CIDR格式子网 --gateway 主子网的IPv4或IPv6网关 --ip-range 从子范围分配容器ip ``` ## 网卡模式 **host** - Host 模式为容器实例直接使用 Host 网络能力,与 Host 共享网卡、路由、转发表等 - 如容器实例绑定了 80 端口,则可以通过访问 Host 的 80 端口访问到容器实例 - 这种模式当前只支持 Linux,不支持 MAC、windows 系统, ## Bridge 模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。从docker0子网中分配一个 IP 给容器使用,并设置 docker0 的 IP 地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到 docker0 网桥中 ## macvlan 模式 在一些特定场景中,比如一些传统应用或者监控应用需要直接使用 HOST 的物理网络,则可以使用 kernel 提供的 macvlan 的方式,macvlan 是在 HOST 网卡上创建多个子网卡,并分配独立的 IP 地址和 MAC 地址,把子网卡分配给容器实例来实现实例与物理网络的直通,并同时保持容器实例的隔离性。Host 收到数据包后,则根据不同的 MAC 地址把数据包从转发给不同的子接口,在外界来看就相当于多台主机。macvlan 要求物理网卡支持混杂 promisc 模式并且要求 kernel 为 v3.9-3.19 和 4.0+,因为是直接通过子接口转发数据包,所以可想而知,性能比 bridge 要高,不需要经过 NAT。 ## 示例 ### 创建桥接网络 ``` > docker network create --driver=bridge --subnet=192.168.0.0/16 br0 // or > docker network create \ --driver=bridge \ --subnet=172.28.0.0/16 \ --ip-range=172.28.5.0/24 \ --gateway=172.28.5.254 \ br0 ```