• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Docker底层技术Namespace Cgroup应用详解

    Docker底层技术:

    docker底层的2个核心技术分别是Namespaces和Control groups

    Namespace:是容器虚拟化的核心技术,用来隔离各个容器,可解决容器之间的冲突。

    主要通过以下六项隔离技术来实现:
    有两个伪文件系统:/proc和/sys/

    只要解耦了这6项,其他系统资源即便有共用的情况,计算机也认为是在两个不同的系统中。

    cgroup(控制程序对资源的占用)

    实现cgroup是的主要目的是为不同用户层面的资源管理,提供一个统一化的接口。从单个进程的资源控制到操作系统层面的虚拟化。

    cgroup的作用:

    1) 资源的限制:cgroup可以对进程组使用的资源总额进行限制。
    2) 优先级分配:通过分配的cpu时间片数量及磁盘IO带宽大小,实际上就是相当于控制了进程运行的优先级
    3) 资源统计:Cgroup可以统计系统资源使用量。比如cpu使用时间,内存使用量等。
    可用于按量计费。
    4) 进程控制:可以对进程组执行挂起,恢复等操作。

    cgroup的应用:

    1)内存和交换分区的限制:

    容器内包括两个部分:物理内存和swap

    在docker中可以通过参数控制容器内存的使用:

    -m或--memory:设置内存的使用限额

    --memory-swap:设置swap(交换分区)的使用限额

    //基于centos镜像,限制内存为200M,交换分区的内存为300M

    [root@sqm-docker01 ~]# docker run -it -m 200M --memory-swap 300M centos

    进入容器查看限制的内存:

    [root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.limit_in_bytes 
    209715200  #显示的是字节
    
    [root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes 
    314572800

    2)容器对cpu限制:

    通过-c或者--cpu-shares设置容器实验cpu的权重。如果不设置默认是1024.

    //基于centos镜像,运行一个容器,名字为containerB,cpu权重限制为512:
    [root@sqm-docker01 ~]# docker run -it --name containerB -c 512 centos
    [root@b2cf9f28ce1d /]# cat /sys/fs/cgroup/cpu/cpu.shares 
    512

    3)限制容器的Block io(磁盘的读写):

    bps:每秒读写的数据量。byte per second
    iops:每秒io的次数。 io per second

    --device-read-bps:设置读取设备的bps
    --device-write-bps:设置写入设备的bps

    --device-read-iops:设置读取设备的iops
    --device-write-iops:设置写入设备的iops

    //创建一个容器名为testA,并限制该磁盘每秒写入的数量为为30MB。
    [root@sqm-docker01 ~]# docker run -it --name testA --device-write-bps /dev/sda:30MB centos

    写入数据进行测试:

    参数解释:
    infile=从/dev/zero中提取
    outfile=自定义一个名称
    bs=1M 文件大小为1M
    count=800 总共写800次。
    oflag=direct:用来指定directory IO方式写文件,这样才会使--device-write-bps生效。

    可以发现每秒写入的数量为80M,大概用时26s。

    正常写入磁盘时:

    以上就是本次介绍的关于Docker底层技术全部知识点,感谢大家的学习和对脚本之家的支持。

    上一篇:添加Nginx代理配置只允许内部IP访问的实现方法
    下一篇:基于Docker如何实现MySQL主从复制详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Docker底层技术Namespace Cgroup应用详解 Docker,底层,技术,Namespace,