4-9 docker 容器命名和資源配額控制

?? 9.1?? docker? 容器命名和重命名

?? 9.2?? 創(chuàng)建docker 容器實例時指定主機名

? 9.3?? docker? 容器資源配額控制之CPU??

? 9.4 ? docker? 容器資源配額控制之內(nèi)存

? 9.5 ? docker? 容器資源配額控制之IO ?

?9.6?? docker? 數(shù)據(jù)映射

? 9.1.1??? docker?? 容器命名和重命名

? 容器命名語法?? docker? run?? -d? --name???? 容器實例名??? 容器鏡像名???? 要執(zhí)行的命令??

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

ba782630b926ee0c62c5cc0b1dbdb916960763c524560d582fcf56e7b5349918


? 容器重命名法: docker? rename ? ? rename ? ? 舊容器名 ? 新容器名


? ?
9.2?? 創(chuàng)建docker? 容器實例時指定主機名??

92.1?? 創(chuàng)建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,內(nèi)存,硬盤性能等的硬件資源使用份額

Docker? 通過cgroup?? 來控制容器使用的資源配額,包括,CPU,內(nèi)存,磁盤三大方面

基本覆蓋了常見資源配額和使用控制



? 例1? :給容器實例分配512?? 權(quán)重的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??? 兩個參數(shù)控制器可以分配的CPU 時鐘周期

--cpu-period?? 是用來指定容器對CPU的使用要在多長時間內(nèi)做一次重新分配,指定周期

--CPU-quota?? 是用來指定這個周期,最多可以有多少時間片段用來跑這個容器,? 指定在這個周期中使用多少時間片


例1? :如果容器進程需要每1秒使用單個CPU的0.2?? 秒時間,可以將CPU-period? 設(shè)置為1000000?? (即1秒)

CPU -quota?? 設(shè)置為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?? 核心控制??

參數(shù):? CPUset? 可以綁定CPU?

對多核CPU的服務(wù)器,docker? 還可以控制容器運行使用哪些CPU內(nèi)核和內(nèi)存節(jié)點,即使用cpuset-cpus? 和

-cpuset-mems?? 參數(shù),對具有NUMA 擴普? 具有多CPU,多內(nèi)存節(jié)點,的服務(wù)器尤其有用,可以對需要高性能計算的容器進行性能最優(yōu)的配置,如果服務(wù)器只有一個內(nèi)存節(jié)點,則CPUset-mems?? 的配置不會有明顯效果

擴展?

服務(wù)器架構(gòu)一部分?? SMP?? ,? NUMA,MPP??? 體系結(jié)構(gòu)介紹

? 從系統(tǒng)架構(gòu)來看,目前的商用服務(wù)器分為三大類

? 1,? 即對稱服務(wù)器結(jié)構(gòu)?? smp????? 例? x? 86?? 服務(wù)器,雙路服務(wù)器

主板上游兩個五路cpu??

2? 非一致? 存儲訪問結(jié)構(gòu)NUMA?????????????????????????? 例? IBM?????? 小型機??? 690??? 個CPU

3??? 大型機????

9.3.4??? taskset???? 命令??

taskset??? 設(shè)置CPU親和力?? ,taskset? 能夠?qū)⒁粋€或多個進程綁定到一個或者多個處理器上

參數(shù)??

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

-p, --pid ? ? 在? 已經(jīng)存在的pid ? 上操作

? 例1?? :設(shè)置在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? 個核心,創(chuàng)建的時候允許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?? 配額控制參數(shù)的混合使用

當(dāng)上面這些參數(shù)中時,cpu-shares??? 控制發(fā)生在容器競爭同一個CPU的時間片,如果通過

cpuset-cpus?? 指定容器A使用cpu0?? ,容器B 只是cpu1 ,在主機上只有這兩個容器使用對內(nèi)核的情況,他們各自占用全部的內(nèi)核資源,cpu-shares??? 沒有明顯效果


把cpu?? 跑滿,4個核心第一和第三個核心跑滿

yum install -y?? epel-release????

yum install -y stress



例1?? :產(chǎn)生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? :容器對硬盤的最高層設(shè)定為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?? 參數(shù)

direct? :讀寫數(shù)據(jù)采用直接IO方式

nonblock????

9.6?? docker?? 數(shù)據(jù)映射???

docker? 用來做計算,存儲外掛??

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

-c?? 用來指定掛載目錄,? 冒號:前面的/src?? 作為物理機本地目錄:后面的 /dst??? 為容器的目錄

例1?? 把物理機上的/var/www/html?? 映射到docker? 實例的/var/www/html??

? 好處:? 這樣當(dāng)docker 壞了,數(shù)據(jù)還在物理機上,在使用apache? 鏡像啟動一個docker? 就可以了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容