前面介绍docker镜像的秘密这篇知识点的时候,https://blog.youkuaiyun.com/dudadudadd/article/details/128200522
,提到了docker容器也有属于自己的IP的概念,默认的Docker容器采用的是bridge网络模式。本篇介绍如何修改容器的网络策略。
首先我们要知道,docker容器的网络配置自带了三种模式,除了默认的bridge模式之外,还有其他的,我们可以用命令查看当前docker有几种网络模式。
[root@hdp3 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
e8e4f692235d bridge bridge local
4d563e307658 host host local
7bfee5177ee6 none null local
上面的查询主要是为了让大家有docker网络模式这个概念。我们自定义网络,不用自带的,因为自带的bridge
,相当于VMware的NAT,可出于某种不可描述的原因,导致它和不指定网络模式创建的容器中的bridge模式存在DNS有无的差异,就是说上面通过命令查出来的bridge网络模式是有DNS的,而你不指定网络模式创建的容器中所使用的bridge网络模式是没有DNS功能的,这点就很诡异。host
模式,很少使用,它是指容器完全没有自己的网络配置,直接使用宿主机的网卡,这种网络模式如果你只是使用容器做IP映射可以用一用,其他更灵活的使用方式根本不考虑这种网络模式。最后一个nono
是预留的空网络无法使用。
而我们自定义网络模式的时候用的是macvlan模块(DRIVER)
,这是docker后期版本中提出的一种新型的网络模块,可以提供更加灵活的网络。
配置的时候,你需要先运行下面的命令,创建一个网络模式。注意网络策略用宿主机的。注意,从实现上来说,完全可以使用自定义网络模式,配置其他网段,但是那样就和bridge一样的效果了,没有再自定义的意义
docker network create clu --driver macvlan --subnet=192.168.88.0/24 --gateway=192.168.88.2 -o macvlan_mode=bridge -o parent=ens33
clu
:这个是你的网络模式名字,你可以自定义
--driver macvlan
:使用macvlan网络模块
--gateway
:该网络模式使用的网关
-o
:是详情配置,上面命令是指基于bridge模式,并继承宿主机的网卡,ens33是你宿主机的网卡名
--subnet
:是最特别的一个配置,它的值要求是CIDR格式,最后我再说怎么写这个配置
当你创建好了网络模式,你就可以查询到了