个人网站栏目,单位建设网站,编程是什么东西,酷炫网站模板目录
Docker网络模式
一、Host模式
二、container模式
三、none模式
四、bridge模式
五、Overlay模式 Docker网络模式 安装Docker时会自动创建3个网络#xff0c;可以使用docker network ls命令列出这些网络。
[rootdocker ~]# docker network ls 我们在使用docker run…目录
Docker网络模式
一、Host模式
二、container模式
三、none模式
四、bridge模式
五、Overlay模式 Docker网络模式 安装Docker时会自动创建3个网络可以使用docker network ls命令列出这些网络。
[rootdocker ~]# docker network ls 我们在使用docker run创建容器时可以用--net选项指定容器的网络模式。
Docker有以下4种网络模式 Host模式使用--nethost指定。 Container模式使用--netcontainer:NAME_or_ID指定。 None模式使用--netnone指定。 Bridge模式使用--netbridge指定默认设置。 一、Host模式 Docker底层使用了Linux的Namespaces技术来进行资源隔离如PID Namespace隔离进程Mount Namespace隔离文件系统Network Namespace隔离网络等。 一个Network Namespace提供了一份独立的网络环境包括网卡、路由、Iptables规则等都与其他的Network Namespace隔离。 一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式那么这个容器将不会获得一个独立的Network Namespace而是和宿主机共用一个Root Network Namespace。容器将不会虚拟出自己的网卡配置自己的IP等而是使用宿主机的IP和端口。出于安全考虑不推荐使用这种网络模式。 我们在192.168.100.131/24的机器上用Host模式启动一个含有WEB应用的Docker容器监听TCP 80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时看到的都是宿主机上的信息。 而外界访问容器中的应用则直接使用192.168.100.131:80即可不用任何NAT转换就如直接跑在宿主机中一样。 但是容器的其他方面如文件系统、进程列表等还是和宿主机隔离的。
[rootdocker ~]# docker run -itd --nethost --namehost busybox [rootdocker ~]# docker exec -it host ifconfig [rootdocker ~]# ifconfig Ps备注两者一摸一样相当于虚拟机的仅主机模式
二、container模式 这个模式可以指定新创建的容器和已经存在的一个容器共享一个Network Namespace而不是和宿主机共享。 新创建的容器不会创建自己的网卡配置自己的IP而是和一个指定的容器共享IP、端口范围等。 同样两个容器除了网络方面其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。 使用--netcontainer:container_id/container_name多个容器使用共同的网络看到的ip是一样的。 [rootdocker ~]# docker run -itd --namecon1 busybox [rootdocker ~]# docker exec -it con1 ifconfig [rootdocker ~]# docker run -itd --netcontainer:con1 --namecon2 busybox
[rootdocker ~]# docker exec -it con2 ifconfig Ps备注类似于双胞胎使用相同的网卡信息
三、none模式 在这种模式下Docker容器拥有自己的Network Namespace但是并不为Docker容器进行任何网络配置。 也就是说这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。 使用--netnone指定这种模式下不会配置任何网络。 [rootdocker ~]# docker run -itd --namenone --netnone busybox
[rootdocker ~]# docker exec -it none ifconfig 四、bridge模式 bridge模式是Docker默认的网络设置属于一种NAT网络模型Docker daemon在启动的时候就会建立一个docker0网桥通过-b参数可以指定每个容器使用bridge模式启动时Docker都会为容器创建一对虚拟网络接口veth pair设备这对接口一端在容器的Network Namespace另一端在docker0这样就实现了容器与宿主机之间的通信。 在bridge模式下Docker容器与外部网络通信都是通过iptables规则控制的这也是Docker网络性能低下的一个重要原因。 使用iptables -vnL -t nat可以查看NAT表在Chain Docker中可以看到容器桥接的规则。
[rootdocker ~]# iptables -vnL -t nat 五、Overlay模式 这是Docker原生的跨主机多子网的网络模型当创建一个新的网络时Docker会在主机上创建一个Network NamespaceNetwork Namespace内有一个网桥网桥上有一个vxlan接口每个网络占用一个vxlan ID当容器被添加到网络中时Docker会分配一对veth网卡设备与bridge模式类似一端在容器里面另一端在本地的Network Namespace中。 容器A、B、C都在主机A上面而容器D、E则在主机B上面现在通过Overlay网络模型可以实现容器A、B、D处于同一个子网而容器C、E则处于另一个子网中。 Overlay中有一个vxlan ID值得范围为256~1000vxlan隧道会把每一个ID相同的网络沙盒连接起来实现一个子网。