Docker网络模式与资源控制管理

网络模式与资源控制管理

  • docker的四种网络
  • docker自定义网络
  • Docker资源控制(cpu、内存、IO资源控制)

docker的四种网络

1、host
在容器内部创建的两个容器A,B,通过docker 0(相当于小型的局域网,为内部容器的网关)进行内部通信;与外部通信地址映射Nat模式物理网卡ens33
如果两个内部容器的服务不同,但端口一样,进行外部通信时,进行端口映射成不同的端口进行通信
2、container
创建的容器不会创建自己的网卡、设置IP等,而是和一个指定地容器共享IP、端口范围
这个模式指定新创建的容器和已经存在的一个容器共享一network namespace,而不是和宿主机共享,新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定地容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表还是隔离的。两个容器的进程可以通过loo网卡设备通信
3、None
该模式关闭了容器的网络功能
这种网络模式下容器只有lo回环网口,没有其他的网卡。none 模式可以在容器创建时通过-network=none参数指定
这种类型的网络无法联网,但是封闭的网络能很好的保证容器的安全性,提高了安全性。
4、Bridge
此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker虛拟网桥,通过docker0网桥及iptables的nat表配置与宿主机通信
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中
从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端挂载在新创建的容器中,并命名为ethO (容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

host模式         -net= host                容器和宿主机共享Network namespace(网络名称空间)
containeb模式    -net=container.NAME_or_ID 容器和另外一个容器共享Network namespace(共享ip地址和端口范围)
none模式         -net= none                容器有独立的Network namespace,但并没有对其进行任何网络设置,无法与外部进行交互。如分配veth pair和网桥连接,配置IP等。
bridge模式       -net= bridge              (默认为该模式)
docker 0为虚拟网桥,所有的容器会连接到虚拟网桥上(因为虚拟网桥为它们的虚拟网关),虚拟网桥会结合iptable的规则去进行地址映射,把容器地址段映射为宿主机的地址段,用于和宿主机通讯,最后让宿主机连接外网。

docker自定义网络

查看网络列表
在这里插入图片描述

根据镜像创建容器并指定ip地址

会报错:来自守护程序的错误响应,仅在用户定义的网络上支持用户指定的IP地址

docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:7 /bin/bash

Docker网络模式与资源控制管理_第1张图片
根据镜像创建容器不指定ip地址

会报错:原因已经之前指定IP地址了

Docker网络模式与资源控制管理_第2张图片
查看已运行容器状态

	docker exec -it 3a /bin/bash
	yum -y install net-tools
	ifconfig 

Docker网络模式与资源控制管理_第3张图片

自定义网络固定IP

	docker network create --subnet=172.18.0.0/16 mysub

Docker网络模式与资源控制管理_第4张图片

定义分配地址

docker run -itd --name test3 --net mysub --ip 172.18.0.100 centos:7 /bin/bash

Docker网络模式与资源控制管理_第5张图片
查看容器网络地址

docker exec -it d69 /bin/bash
yum -y install net-tools
ifconfig

Docker网络模式与资源控制管理_第6张图片

测试网关

Docker网络模式与资源控制管理_第7张图片
测试另一个网桥网关

Docker网络模式与资源控制管理_第8张图片

Docker资源控制(cpu、内存、IO资源控制)

07年谷歌,可以控制资源分配通过操作系统内核,控制应用程序使用内存资源、		cpu资源、 文件系统资源等等
cgroup是一种资源控制手段
每个容器相当于一个进程

CPU使用率控制

cpu周期: 1s为一个周期的定律,参数值一般为100000 (CPU衡量单位是秒)
假如需要给此容器分配cpu使用率的20%,则参数需要设置为20000,相当于每个周期分配给这个容器0.2s
cpu在一个时刻,只能给一个进程占用


cat /sys/fs/cgroup/qpu/docker/容器ID/qpu.cfs_ quota us

Docker网络模式与资源控制管理_第9张图片
在这里插入图片描述

动态查看cpu使用率

top

Docker网络模式与资源控制管理_第10张图片
docker stats
在这里插入图片描述
CPU 20%的限定

方式一 在创建容器运行进行资源限制
创建容器

在这里插入图片描述
计算圆周率

docker exec -it 2e /bin/bash
yum -y install bc
echo "scale=5000;4*a(1)" | bc -l -q

在这里插入图片描述

然后再开个窗口top查看

Docker网络模式与资源控制管理_第11张图片
方式二 对已经存在且在运行时状态的容器进行设置

Docker网络模式与资源控制管理_第12张图片

你可能感兴趣的:(Docker)