Docker网络和资源控制命令——(20版)

一、容器网络概述

  • docker0网络

  • docker虚拟网关

  • loopback

    回环网卡、TCP/IP网卡是否生效
    
  • virtual bridge

    linux自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
    

    ◆ 安装workstation(虚拟化平台)之后,会在网络适配器中会多出VMnet1 VMnet8 VMnet0

小结
docker 0:容器的网关,绑定物理网卡,负责做NAT地址转换、端口映射
docker 0本身也是一种容器

二、docker四种网络模式

1、host模式

  • -net=host
  • 容器和宿主机共享Network namespace
  • host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口,如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的NetworkNamespace,而是和宿主机共用一个Network
    Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的
  • 使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是dockerhost
    上已经使用的端口就不能再用了,网络的隔离性不好

2、container模式

  • -net=container:NAME_or_ID
  • 容器和另外一个容器共享Network namespace
  • container创建的容器不会创建自己的网卡、设置IP等,而是和一个指定地容器共享IP、端口范围
    这个模式指定新创建的容器和已经存在的一个容器共享一个network
    namespace,而不是和宿主机共享,新创建的容器不会创建自己的网卡,配置自己的Ip,而是和一个指定地容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表还是隔离的。两个容器的进程可以通过loo
    网卡设备通信

3、none模式(该模式关闭了容器的网络功能)

  • -net=none
  • 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,配置IP等
  • 这种网络模式下容器只有lo回环网口,没有其他的网卡。none模式可以在容器创建时通过-network=none参数指定
  • 这种类型的网络无法联网,但是封闭的网络能很好的保证容器的安全性

4、bridge模式

  • -net=bridge (默认为该模式)
  • 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker虚拟网桥,通过dockero
    网桥及iptables的nat表配置与宿主机通信(与ens33对接)
  • 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中
  • 从dockerO子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将 veth pair设备的一端放在(以挂载的方式)新创建的容器中,并命名为etho(容器的网卡),另一端放在主机中,以vethxxx(veth对:一对虚拟接口,用于连接两个虚拟网络环境,以挂载的形式挂载到两个名称空间)这样类似的名字命名,并将这个网络设备加入到dockero网桥中。可以通过brctl show命令查看
  • bridge模式是docker的默认网络模式,不写-net参数,就是 bridge模式。使用docker run -p时,
    docker实际是在iptables,做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

:以上不需要动手配置,真正需要配置的是自定义网络

三、docker自定义网络

3.1、自定义网络固定IP

[root@docker ~]# docker network ls
[root@docker ~]# docker network create --subnet=172.18.0.0/16 net
[root@docker ~]# docker network ls
[root@docker ~]# docker run -itd --name test2 --net net --ip 172.18.0.100 centos:7 /bin/bash
590a5cd37960b7898821a9d179f37e5fb6508f33809c172f95cb720ae3540037
[root@docker ~]# docker ps -a
[root@docker ~]# docker exec -it 590a5cd37960 /bin/bash
[root@590a5cd37960 /]# yum -y install net-tools
[root@590a5cd37960 /]# ifconfig

四、docker资源控制(cpu、内存、IO资源控制)

4.1、cpu使用率控制

[root@docker ~]# cd /sys/fs/cgroup/cpu/docker
[root@docker docker]# ll
[root@docker docker]# cd 590a5cd37960b7898821a9d179f37e5fb6508f33809c172f95cb720ae3540037
[root@docker 590a5cd37960b7898821a9d179f37e5fb6508f33809c172f95cb720ae3540037]# ls
[root@docker 590a5cd37960b7898821a9d179f37e5fb6508f33809c172f95cb720ae3540037]# cat cpu.cfs_quota_us 

:"-1"代表了此容器可以使用的资源不受限制
cpu周期:1s为一个周期的定律,参数值一般为100000(cpu衡量单位是秒)
假如需要给此容器分配àpu使用率的20%,则参数需要设置为20000,相当于每个周期分配给这个容器0.2s
cpu在一个时刻,只能给一个进程占用

检查资源的命令
top
docker stats(查看容器使用的资源情况)

:20%的限定

  1. 方式一:
docker run -itd --name test2 --cpu-quota 20000 centos:7 /bin/bash
//CPU压力测试
docker exec -it id /bin/bash
yum install -y bc
#计算圆周率
echo "scale=5000;4*a(1)" | bc -l -q
[root@docker ~]# docker run -itd --name test3 --cpu-quota 20000 centos:7 /bin/bash
d4a846253b99e993811473ac11c7d9c2f39db45cea984ee38f65af04dbdbccc6
[root@docker ~]# docker exec -it d4a846253b99 /bin/bash
[root@d4a846253b99 /]# yum -y install bc
[root@d4a846253b99 /]# echo "scale=5000;4*a(1)"| bc -l -q
  1. 方式二
对已有容器进行更改
[root@docker docker]# cd 590a5cd37960b7898821a9d179f37e5fb6508f33809c172f95cb720ae3540037
[root@docker 590a5cd37960b7898821a9d179f37e5fb6508f33809c172f95cb720ae3540037]# echo "20000" > cpu.cfs_quota_us
[root@docker 590a5cd37960b7898821a9d179f37e5fb6508f33809c172f95cb720ae3540037]# cat cpu.cfs_quota_us 

4.2、设置容器的权重

按比例分配设置容器权重,此处权重是所有值相加然后看占用百分比
[root@docker ~]# docker run -itd --name a1 --cpu-shares 512 centos:7 /bin/bash
2a6755008122ffcfa1caf95bbd50f516eb831451a77e86f7b02ce3646f27bbcf
[root@docker ~]# docker run -itd --name a2 --cpu-shares 1024 centos:7 /bin/bash
72aaf301a8861827d1ff3060990fcfac1585f65c1f36b116a1ad8a124ac764f6
[root@docker ~]# docker ps -a
[root@docker ~]# docker exec -it 2a6755008122 /bin/bash

4.2.1、使用压测工具

复制两个终端、分别进入容器后进行测试,主终端使用docker stats进行查看
[root@72aaf301a886 /]# yum -y install epel-release
[root@2a6755008122 /]# yum -y install epel-release

4.2.2、stress 模拟满载线程

[root@2a6755008122 /]# yum  -y install stress
[root@72aaf301a886 /]# yum -y install stress
[root@72aaf301a886 /]# stress -c 4
stress: info: [92] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd
[root@2a6755008122 /]# stress -c 4
stress: info: [89] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd
[root@docker ~]# docker stats  #查看主终端上docker stats动态检测的状态

4.3、限制容器使用的cpu(指定使用第二个和第四个)

[root@docker ~]# docker run -itd --name c2 --cpuset-cpus 1,3 centos:7 /bin/bash
afc1017003042489f61f4276c25cb48720c8c248bee592e094ac817aba7d5450
[root@docker ~]# docker exec -it afc101700304 /bin/bash
[root@afc101700304 /]# yum -y install epel-release
[root@afc101700304 /]# yum -y install stress
[root@afc101700304 /]# stress -c 2
stress: info: [111] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

4.4、内存使用限制

[root@docker ~]# docker run -itd --name c1 -m 512m centos:7 /bin/bash
10541be0a5fb5fb24bc21fe3b6414e5e6141bc067a74899a18397cc156d3d42a
[root@docker ~]# docker stats  #查看cpu状态

4.5、查看容器状态或者资源使用情况的命令

1、top
2、docker stats
3、docker inspect 容器ID
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值