4-9 docker 容器命名和资源配额控制

   9.1   docker  容器命名和重命名

   9.2   创建docker 容器实例时指定主机名

  9.3   docker  容器资源配额控制之CPU  

  9.4   docker  容器资源配额控制之内存

  9.5   docker  容器资源配额控制之IO  

 9.6   docker  数据映射

  9.1.1    docker   容器命名和重命名

  容器命名语法   docker  run   -d  --name     容器实例名    容器镜像名     要执行的命令  

[root@xuegod6 ~]# docker run -itd --name docker11 docker.io/centos:latest /bin/bash

ba782630b926ee0c62c5cc0b1dbdb916960763c524560d582fcf56e7b5349918


  容器重命名法: docker  rename     rename     旧容器名   新容器名


   
9.2   创建docker  容器实例时指定主机名  

92.1   创建docker  容器实例时,指定主机名

 语法:  docker  run  -it  --name   容器名   -h    指定主机名  镜像   /bin/bash   

[root@xuegod6 ~]# docker run -it --name docker3 -h docker63.cn docker.io/centos:latest /bin/bash

[root@docker63 /]#

9.3    docker  容器资源配额控制之CPU   

9.3.1   docker  容器资源配额控制

   启动docker  容器时,指定CPU,内存,硬盘性能等的硬件资源使用份额

Docker  通过cgroup   来控制容器使用的资源配额,包括,CPU,内存,磁盘三大方面

基本覆盖了常见资源配额和使用控制



  例1  :给容器实例分配512   权重的CPU  使用份额

   --CPU-shares   512  

[root@xuegod6 ~]# docker run -it --cpu-shares 512 docker.io/centos:latest /bin/bash

[root@13604e0295c7 /]#


 
启动一下多个容器,测试一下是不是只能使用512  份额的CPU资源,单独一个容器,看不出来

9。3.2     了解CPU周期控制

  docker   提供了  --CPU -period  --cpu-quota    两个参数控制器可以分配的CPU 时钟周期

--cpu-period   是用来指定容器对CPU的使用要在多长时间内做一次重新分配,指定周期

--CPU-quota   是用来指定这个周期,最多可以有多少时间片段用来跑这个容器,  指定在这个周期中使用多少时间片


例1  :如果容器进程需要每1秒使用单个CPU的0.2   秒时间,可以将CPU-period  设置为1000000   (即1秒)

CPU -quota   设置为200000(0.2秒)

docker run -it --cpu-period 1000000 --cpu-quota 200000 docker.io/centos /bin/bash

[root@2640b97115fe ~]# cat /sys/fs/cgroup/cpu/cpu.cfs_period_us

1000000

[root@2640b97115fe ~]# cat  /sys/fs/cgroup/cpu/cpu.cfs_quota_us

200000

9.3.3   CPU  core   核心控制  

参数:  CPUset  可以绑定CPU 

对多核CPU的服务器,docker  还可以控制容器运行使用哪些CPU内核和内存节点,即使用cpuset-cpus  和

-cpuset-mems   参数,对具有NUMA 扩普  具有多CPU,多内存节点,的服务器尤其有用,可以对需要高性能计算的容器进行性能最优的配置,如果服务器只有一个内存节点,则CPUset-mems   的配置不会有明显效果

扩展 

服务器架构一部分   SMP   ,  NUMA,MPP    体系结构介绍

  从系统架构来看,目前的商用服务器分为三大类

  1,  即对称服务器结构   smp      例  x  86   服务器,双路服务器

主板上游两个五路cpu  

2  非一致  存储访问结构NUMA                           例  IBM       小型机    690    个CPU

3    大型机    

9.3.4    taskset     命令  

taskset    设置CPU亲和力   ,taskset  能够将一个或多个进程绑定到一个或者多个处理器上

参数  

-c,  --cpu-list               以列表形式显示和指定CPU

-p, --pid     在  已经存在的pid   上操作

  例1   :设置在1 号和2号上运行


[root@xuegod6 ~]# taskset -cp 1,2 7568

pid 7568's current affinity list: 0-3

pid 7568's new affinity list: 1,2

例2   查看ID 为1的是哪个进程 

[root@xuegod6 ~]# taskset -cp 1

pid 1's current affinity list: 0-3

[root@xuegod6 ~]#

centos7   中进程ID为1的进程是:systemd     rhel6  中的进程是init  


     重启nginx  后,4个工作进程就可以各自用自己的CPU

例4   :物理机有16  个核心,创建的时候允许0.1.2 

[root@xuegod6 ~]# docker run -it --name cpu1 --cpuset-cpus 0-2 docker.io/centos

[root@762985fa0ee9 /]#

[root@762985fa0ee9 /]# cat /sys/fs/cgroup/cpuset/cpuset.cpus

0-2

9.3.5    CPU   配额控制参数的混合使用

当上面这些参数中时,cpu-shares    控制发生在容器竞争同一个CPU的时间片,如果通过

cpuset-cpus   指定容器A使用cpu0   ,容器B 只是cpu1 ,在主机上只有这两个容器使用对内核的情况,他们各自占用全部的内核资源,cpu-shares    没有明显效果


把cpu   跑满,4个核心第一和第三个核心跑满

yum install -y   epel-release    

yum install -y stress



例1   :产生2个CPU   进程,2个io  进程,20 秒后停止运行

[root@xuegod6 ~]# stress -c 2 -i 2 --verbose --timeout 1m

可以看到非常耗CPU

例2  :   测试两个docker 是不是在CPU0,1   上运行

[root@xuegod6 ~]# docker run -itd --name docker10 --cpuset-cpus 0,1 --cpu-shares 512 docker.io/centos /bin/bash

aa33bb435e09b81b4adf68708700a7579c135d8c7458d90c33fa0f1b16f90049

[root@xuegod6 ~]# docker  run  -itd --name  docker20 --cpuset-cpus 0,1  --cpu-shares 512 docker.io/centos  /bin/bash 

62a27e8dced1ed634e79ec1ff24b225bdd8c7bffc8d25e3c864936786402ac51

进入到docker   里面     两个容器都要   进入

[root@xuegod6 ~]# docker exec -it docker10 /bin/bash

[root@aa33bb435e09 /]#yum   install -y    epel-release 

      [root@aa33bb435e09 /]#yum   install -y      stress  


5分钟以后删除

[root@xuegod6 ~]# docker run -it --rm --name mk centos sleep 5

[root@xuegod6 ~]#


[root@xuegod6 ~]# docker run -it -m 128m docker.io/centos:latest

[root@ed4235fe193e /]#

查看一下

[root@ed4235fe193e ~]# cat /sys/fs/cgroup/memory/memory.limit_in_bytes

134217728

9.5  docker  io  

[root@xuegod6 ~]# docker run --help | grep write -b

1648:      --device-write-bps value      Limit write rate (bytes per second) to a device (default [])

1745:      --device-write-iops value    Limit write rate (IO per second) to a device (default [])

2130:      --entrypoint string          Overwrite the default ENTRYPOINT of the image

清空缓存 

[root@xuegod6 ~]# echo 3 > /proc/sys/vm/drop_caches

[root@xuegod6 ~]# free -m

              total        used        free      shared  buff/cache  available

Mem:          1980        486        1228          10        265        1231

Swap:          2047         

例1  :容器对硬盘的最高层设定为1Mb  /s

[root@xuegod6 ~]# docker run -it --device /dev/sda:/dev/sda --device-write-bps /dev/sda:1mb docker.io/centos /bin/bash

查看读写速度

[root@f55dfaa5f79a /]# time dd if=/dev/sda of=test.out bs=1M count=50 oflag=direct

50+0 records in

50+0 records out

52428800 bytes (52 MB, 50 MiB) copied, 42.8647 s, 1.2 MB/s

real 0m42.878s

user 0m0.002s

sys 0m0.483s

dd   参数

direct  :读写数据采用直接IO方式

nonblock    

9.6   docker   数据映射   

docker  用来做计算,存储外挂  

语法 : docker    run  -itd    -v    /src:/dst  docker.io/centos   /bin/bash    

-c   用来指定挂载目录,  冒号:前面的/src   作为物理机本地目录:后面的 /dst    为容器的目录

例1   把物理机上的/var/www/html   映射到docker  实例的/var/www/html  

  好处:  这样当docker 坏了,数据还在物理机上,在使用apache  镜像启动一个docker  就可以了

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355