容器的网络默认与宿主机、与其余容器相互隔离,且容器中能够运行一些网络应用,好比nginx、web应用、数据库等,若是须要让外部也能够访问这些容器中运行的网络应用,那么就须要配置网络来实现。nginx
一样的,不一样需求下,容器与宿主机的通讯有不一样的业务状态这时候就须要容器网络管理以达成管理不一样业务下相关的网络配置。web
bridge network(网桥)模式:默认的网络模式,相似虚拟机的nat模式docker
host network(主机)模式:容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络数据库
none network模式:容器禁用全部网络网络
overlay network(覆盖)模式:利用vxlan实现的bridge模式负载均衡
macvlan network模式:容器具有MAC地址,使其在外部看来是一台真实的网络设备ide
命令格式: docker network ls [参数]性能
经常使用参数:计算机网络
-q 只显示网络对象的ID
注意: docker安装以后,会自动建立bridge、host、none三种网络驱动。3d
命令格式:docker network create [参数] 网络
经常使用参数:
-d 指定网络的驱动,不指定默认为bridge -- subnet 指定子网网段(192.168.0.0/16) -- ip-range 指定容器的IP范围 -- gateway 子网的网关
注意:
建立网络部分参数,涉及到网络工程师相关的知识,这里不作详细介绍有须要能够参考「计算机网络」这本书,内有详解。
host、none模式的网络只能存在一个,再次建立会报错。
删除一个或多个网络
命令格式:docker network rm 网络[网络..]
命令格式:
docker network inspect [参数] 网络
docker inspect [参数] 网络
经常使用参数:
-f 根据format输出结果
命令格式:docker run/create --network 网络
注意:默认状况下,docker建立或启动容器时,会默认使用名为bridge的网络
命令格式:
docker network connect/disconnect [参数] 网络 容器
经常使用参数:
-f 强制断开链接
bridge网络模式
宿主机上须要单独的bridge网卡,如默认docker默认建立的docker0。
容器之间、容器与主机之间的网络通讯,是借助为每个容器生成的一对veth pair虚拟网络设备对,进行通讯的。一个在容器上,另外一个在宿主机上。(这是网桥)
外部没法直接访问容器。须要创建端口映射才能访问。(能够理解为网卡)
容器借由veth虚拟设备经过如docker0这种bridge网络设备进行通讯。
每一容器具备单独的IP
bridge原理示意图
2 . bridge网络模式下的端口映射
根据上面关于bridge的特色咱们能够知道访问bridge网络模式的设备,须要端口映射。
端口映射的命令格式:docker run/create -P/-p
命令参数:
-P 将容器内部全部暴露端口进行随机映射 -p 手动指定端口映射 (-p [宿主机IP] : [宿主机端口] : 容器端口)
关于-p参数的举例:
-p ::80 将容器的80端口随机映射到宿主机的随机IP上 -p :8000:6379 将容器的6379端口映射到宿主机的任意IP的8000端口上
host网络模式
host网络模式的特色:
容器彻底共享宿主机的网络,网络没有隔离。宿主机的网络就是容器的网络。
容器、主机上的应用所使用的端口不能重复。
外部能够直接访问容器,不须要端口映射
host网络模式示意图
除了普通的host网络模式外,一样还有特殊版本的host网络模式(container网络模式)。
container网络模式的特色:
其实就是容器共享其余容器的网络,至关于该容器,在网络层面上,将其余容器做为“主机”。它们之间的网络没有隔离。
container网络模式
container网络模式的使用:
docker run/create --network container:容器
none、overlay与macvlan网络模式
none网络模式的特色:
容器上没有网络,也无需任何网络设备
overlay网络模式的特色:
overlay网络模式实现方案有不少种,在Docker自身集成了一种,基于VXLAN隧道技术实现
macvlan网络模式的特色:
macvlan的主要特色就是通讯直接基于mac地址进行转发
在macvlan中宿主机担任的角色是一台二层交换机,docker会维护一张mac地址表,当宿主机收到数据包时,直接根据mac地址找到对应的容器
此次文章主要复习了docker的网络管理的内容,其中host,bridge,container是主要的复习内容,且在三种网络模式中建议优先选用host网络模式,其使用性能最优。