Docker网络、计算、内存和I/O资源控制

Docker网络的四种模式

我们在搭建好docker之后,通过ip add 或者 ifconfig命令就可以查看到,在安装好docker之后就会虚拟出一块叫做docker 0的一块网卡。
在这里插入图片描述
其作为docker的默认网络模式,即bridge模式。其中的所有容器将docker0作为网关,这样就能与外界进行通信。
一般的容器要想与外界进行通信,需要拥有IP地址或者几个容器使用相同的ip地址,但是通过不同的端口号,通过nat转换外部才可以与其通信。

host模式

在host模式中,所有的容器与主机共用一个网络命名空间。可以认为是共用一个IP地址,但是每个容器拥有不同的端口号。这样做的好处是,每个容器拥有非常良好的网络环境,但是网络的隔离性比较差,非常容易出现端口冲突。

container模式

在container模式中,新创建的容器通过与一个已存在的网络命名空间共享一个网络,如IP地址段和端口。除了网络是共享的,其他进程是隔离的。两个设备之间是通过回环网卡进行通信。

none模式

在none模式中,每个容器处在一个网络命名空间。彼此之间无法通行,也无法与外界进行通信,只能在自己的空间中进行网络通信。这样做可以使得容器安全性最高。

bridge模式

bridge模式也是docker网络的默认模式。通过虚拟出docker0,可以理解为虚拟的二层交换机,新生成的容器通过自己的网卡与docker0相连,docker0再与物理网卡相连,这样就可以与外界通信了。docker0可以看做是一个网络命名空间。我们可以创建多个命名空间与物理网卡相连,物理网卡则需要将IP地址nat转换的工作。

1.可以通过命令的方式查看docker中的网络模式。docker network ls
在这里插入图片描述
2.通过命令创建新的网络命名空间,来自定义网络。
** docker network create --subnet=IP地址段/子网掩码 网络空间的名称 **
在这里插入图片描述
通过创建容器定义网络,** docker run -it --name qaq --net redhat --ip=172.16.0.101 centos:7 /bin/bash **
在这里插入图片描述
这时在查看宿主机网卡,就会发现多出了一块虚拟的网卡。
在这里插入图片描述

docker的CPU资源控制

我们可以在**/sys/fs/cgroup/cpu/docker**中查看CPU的配额情况。
在这里插入图片描述
cat cpu.cfs_quota_us ,可以查看当前CPU的配额,-1代表不收任何限制。
在这里插入图片描述

cpu配额

为了验证配额的效果,我们可以安装压测工具,对容器进行bc压测。

1.首先用配额命名创建一个容器。docker run -itd --name centos333 --cpu-quota 50000 centos:7 /bin/bash
在这里插入图片描述
2.我们可以看到容器配额为可以使用一半的cpu资源。
在这里插入图片描述
3.在容器中安装bc测试软件。yum install bc -y
在这里插入图片描述
4.打开另一个终端,用top命令动态查看当前CPU使用率,并在容器中计算圆周率5000位。
使用:echo “scale 5000; 4*a(1)” | bc -l -q
在这里插入图片描述
CPU使用率被限制在50%。
在这里插入图片描述

按比例分配CPU资源

除了上述为CPU做限额,还可以限制容器使用的CPU线程数。
1.用top命令,之后再按1,可以查看当前CPU的线程数情况。
在这里插入图片描述
2.通过命令:docker run -itd --name c1 --cpu-shares centos:7 /bin/bash,创建两台占用cpu资源为:1/3和2/3的两个容器。
在这里插入图片描述
在这里插入图片描述
3.进入容器,安装压测工具,yum install epel-release -y&&yum install stress -y

4.生成4个线程stress -c 4,并用docker stats查看。
在这里插入图片描述
从中可以看出,c2是c1的两倍。

指定宿主机CPU进程运行容器

1.通过top命令,按1查看CPU进程序列号。
在这里插入图片描述
2.指定0号和2号CPU运行容器。docker run -itd --name c3 --cpuset-cpus 0,2 centos:7 /bin/bash
在这里插入图片描述
安装测试软件。yum install epel-release -y&&yum install stress -y

3.用stress命令产生4个线程,在查看。
在这里插入图片描述
发现第0号和4号工作,其他空闲。
在这里插入图片描述

容器内存配额

容器的内存配额命令是:docker run itd --name c4 -m 512m centos:7 /bin/bash
通过docker stats命令查看配额情况。
在这里插入图片描述

I/O读写的限制

通过命令可以限制容器写入和读取磁盘的速度,
1.docker run -d --device-read-bps /dev/设备名称:限额大小 镜像名称
docker run -d --device-read-bps /dev/sdb:30M centos:7

2…docker run -d --device-write-bps /dev/设备名称:限额大小 镜像名称
docker run -d --device-write-bps /dev/sdb:30M centos:7

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐