?? 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? 就可以了