私有仓库( •̀ ω •́ )✧

私有仓库建立
[root@docker1 ~]# docker pull registry

在这里插入图片描述
在这里插入图片描述

在docker 引擎终端设置
[root@docker1 ~]# vim /etc/docker/daemon.json

在这里插入图片描述

[root@docker1 ~]# systemctl restart docker.service 
[root@docker1 ~]# docker create -it registry /bin/bash
b6f0c8419a6f18fe825144a3fc995b8e61a45249cb5002bb3211ed743bb23be6
[root@docker1 ~]# docker ps -a

在这里插入图片描述

会是异常状态
[root@docker1 ~]# docker start b6f0c8419a6f
b6f0c8419a6f
[root@docker1 ~]# docker ps -a

在这里插入图片描述

宿主机的/data/registry自动创建挂载容器中的/tmp/registry
[root@docker1 ~]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
68d2f9e0cb5f072acd2505b5117f1e342be98397d504dd9f0a1e7edb565aee38
[root@docker1 ~]# docker ps -a

在这里插入图片描述

更改标记为192.168.235.156:5000/nginx
[root@docker1 ~]# docker tag nginx:latest 192.168.235.156:5000/nginx
[root@docker1 ~]# docker images

在这里插入图片描述

上传

在这里插入图片描述

cgroup 资源配置方法

docker通过cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制
cgroup是controlgroup是的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组所有的物理资源(如CPU、内存、磁盘、IO等等)的机制

CPU使用率控制

CPU周期:1s为一个周期的定律,参数值一般为100000(CPU衡量单位是秒)
CPU在一个时刻,只能给一个进程

使用stress 工具测试 CPU

[root@docker1 ~]# mkdir /opt/stress/
[root@docker1 ~]# vim /opt/stress/Dockerfile

FROM centos:7
RUN yum install -y wget
RUN wget -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
RUN yum install -y stress
[root@docker1 stress]# docker build -t centos:stress .
docker run -tid --name cpu512 --cpu-shares 512 centos:stress stress -c 10		##容器内部模拟10个子函数进程
docker run -tid --name cpu1024 --cpu-shares 1024 centos:stress stress -c 10		##再开启一个容器做比较
docker stats 查看资源使用

在这里插入图片描述

[root@docker1 stress]# cd /sys/fs/cgroup/cpu/docker/
[root@docker1 docker]# ls

在这里插入图片描述

[root@docker1 docker]# cat cpu.cfs_quota_us
-1
[root@docker1 docker]# cat cpu.cfs_period_us
100000
[root@docker1 docker]# docker run -itd --name centos_quota1 --cpu-period 100000 --cpu-quota 200000 centos:stress
3ac61f0562d3fe885ce4720ee2b171b6bd83e3693048866f045115f8e2907a2d
[root@docker1 docker]# cd 3ac61f0562d3fe885ce4720ee2b171b6bd83e3693048866f045115f8e2907a2d
[root@docker1 3ac61f0562d3fe885ce4720ee2b171b6bd83e3693048866f045115f8e2907a2d]# cat /sys/fs/cgroup/cpu/cpu.cfs_period_us 
100000
[root@docker1 3ac61f0562d3fe885ce4720ee2b171b6bd83e3693048866f045115f8e2907a2d]# cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us
-1
[root@docker1 stress]# docker run -tid --name cpu2 --cpuset-cpus 1 --cpu-shares 512 centos:stress stress -c 1
0cccd64899f2944d2045c8522a70f6251b4b5a0f18520c633a19b8c31da1d16b
[root@docker1 stress]# top
top - 14:30:02 up 1 day,  9:58,  2 users,  load average: 20.65, 18.86, 11.70
Tasks: 255 total,  23 running, 232 sleeping,   0 stopped,   0 zombie
%Cpu0  : 98.7 us,  1.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  : 97.7 us,  2.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  : 98.7 us,  1.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3861508 total,   317820 free,   941012 used,  2602676 buff/cache
KiB Swap:  4064252 total,  4063228 free,     1024 used.  2435380 avail Mem 
[root@docker1 stress]# docker run -tid --name cpu3 --cpuset-cpus 3 --cpu-shares 1024 centos:stress stress -c 132d4abc584b2e6ee16dbef10f0169546a6d5f27476912317a895a7ed48080597
[root@docker1 stress]# top
top - 14:31:34 up 1 day, 10:00,  2 users,  load average: 21.50, 19.60, 12.66
Tasks: 259 total,  23 running, 236 sleeping,   0 stopped,   0 zombie
%Cpu0  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  : 95.0 us,  5.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3861508 total,   311216 free,   946664 used,  2603628 buff/cache
KiB Swap:  4064252 total,  4063228 free,     1024 used.  2428952 avail Mem 
内存限额

与操作系统类似,容器可使用的内存包括两部分:物理内存和Swap。
Docker通过下面两组参数来控制容器内存的使用量。
-m或–memory: 设置内存的使用限额,例如100M、 1024M
–memory-swap:设置内存+swap的使用限额
执行如下命令允许该容器最多使用200M的内存和300M 的swap。

docker run -it -m 200M --memory-swap=300M centos:stress
 --vm 1 --vm-bytes 280M
--vm1:启动1个内存工作线程
--vm-bytes 280M: 每个线程分配280M内存
docker status		##另开终端查询

在这里插入图片描述

docker run -it centos:stress
docker status		
Block IO的限制

默认情况下,所有容器能平等地读写磁盘,可以通过设置**–blkio-weight**参数来改变容器blockI0的优先级。
–blkio-weight 与–cpu-shares 类似,设置的是相对权重值,默认为500。
在下面的例子中,容器A读写磁盘的IO是容器B的两倍

docker run -it --name container_01 --blkio-weight 600 centos:stress
docker run -it --name container_02 --blkio-weight 300 centos:stress		##另开终端
cd /sys/fs/cgroup/blkio/docker	##再开一个终端看下
bps和iops的限制

控制磁盘的实际IO
bps是bytepersecond,每秒读写的数据量。
iops是io per second, 每秒 IO 的次数。

可通过以下参数控制容器的bps和iops:
–device-read-bps,限制读某个设备的bps
–device-read-iops, 限制读某个设备的iops
–device-write-iops, 限制写某个设备的iops

1、限制容器写/dev/sda 的速率为5MB/s
[ root@localhost docker]# docker run -it --device-write-bps /dev/sda:5MB centos:stress
[root@d42b2ccf5237 /]# dd if=/dev/zero of=test bs=1M count=10 oflag=direct	##direct:磁盘
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 2.00132 s, 5.2 MB/s		##使用2s复制10M,速度5.2M/s
2、限制容器写/dev/sda 的速率为10MB/s
[root@d4a13dd24f44 /]# docker run -it --device-write-bps /dev/sda:10MB centos:stress
[root@d42b2ccf5237 /]# dd if=/dev/zero of=test bs=1M count=100 oflag=direct
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 9.95113 s, 10.5 MB/s	##使用9.9s复制100M,速度10.5M/s

3、对磁盘不做限制明显速度快很多
[root@docker ~]# docker run -it centos:stress		
[root@07ca4ac0fce2 /]# dd if=/dev/zero of=test bs=1M count=100 oflag=direct
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0960668 s, 1.1 GB/s	##使用0.09s复制100M
构建镜像时指定资源限制
--build-arg=[]:    设置镜像创建时的变量;
--cpu-shares :     设置cpu使用权重;
--cpu-period :     限制CPU CFS周期;
--cpu-quota :      限制cPU CFS配额;
--cpuset-cpus :    指定使用的CPu id;
--cpuset-mems :    指定使用的内存id;
--disable-content-trust :  忽略校验,默认开启;
-f :     指定要使用的Dockerfile路径;
--force-rm :   设置镜像过程中删除中间容器;
--isolation :  使用容器隔离技术;
--label=[ ] :  设置镜像使用的元数据;
-m :    设置内存最大值;
--memory-swap :   设置swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :   创建镜像的过程不使用缓存;
--pull :  尝试去更新镜像的新版本;  
--quiet, -q :  安静模式,成功后只输出镜像ID;
--rm :     设置镜像成功后删除中间容器;
--shm-size :   设置/dev/ shm的大小,默认值是64M;
--ulimit :  Ulimit配置。
--squash :  将Dockerfile中所有的操作压缩为一层。
--tag, -t:  镜像的名字及标签,通常name :tag或者name   格式;可以在一次构建中为一个镜像设置多个标签。
 --network:    默认default。在构建期间设置RUN指令的网络模式 
小结

一、资源限制的主要类型
1、CPU 权重shares、quota、cpuset
2、磁盘 BPS 、TPS限制,指定使用哪个磁盘、磁盘分区
3、内存 -m -swap 内存、交换分区
二、资源限制的几种方式
1、build 构建镜像时,可以指定该镜像的资源限制
2、run 将镜像跑为容器的时候,可以指定容器的资源限制
3、容器启动之后,可以在宿主机对应容器的目录下。修改资源限制,然后重载
/sys/fs/cgroup/*(cpu、blk、mem) /docker/容器ID/ -->修改对应的资源限制文件参数就可以
三、资源限制的状态查询
1、docker inspect 镜像ID/容器ID
2、直接查看宿主机对应容器ID资源限制的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值