Docker2(docker仓库+cgroup)

一.Docker仓库

1.创建docker仓库

docekr load -i registry:2.3.1

2.Docker 官方已经把仓库封装为镜像,直接通过启动容器就可以部署完成仓库

 docker run -d --name registry -p 5000:5000 -v/opt/registry:/var/lib/registry registry:2.3.1

3.默认docker 仓库远程推送拉取需要TLS加密支持,走的是https协议,如需开启http方式,
需要做如下修改:

vim /etc/systemd/system/docker.service(此处docker.service文件是链接或者cp过来的)
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
--bip 192.168.0.1/24 --insecure-registry 172.25.254.7:5000
 systemctl daemon-reload
 systemctl restart docker

4.将镜像放进仓库中(push)


5.从仓库中拉取镜像


6.仓库认证
仓库不能是公开的(不能说随便谁都可以进行push和pull),最好有用户和权限

(1)创建目录/opt/auth,并创建用户用户admin,密码为westos;多个用户时,只需追加就好,此例中追加了一个用户haha ,密码为redhat

(2)生成容器vm1

docker run -d -p 5000:5000 --name vm1 -v  /opt/registry:/var/lib/registry -v /opt/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry
Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2.3.1


(3)若不登录,则不能push进仓库


(4)用户admin登录,push

二.cgroup ##(此例是在redhat6.5中做测试)

cgroups 实现了对资源的配额和度量.(此例中凡是需要/etc/init.d/cgconfig restart 均需跳出cgroup目录进行操作,否则会重启失败)

1.安装


2.memory 内存相关的限制,此例中限制在200M=20010241024B

(1)编写配置文件(x1为自定义名字,限制使用内存字节以及swap字节,总共200M),记得跳出cgroup目录,进行重启

vim /etc/cgconfig.conf


(2)测试,当申请300M文件时,只能分给200M

(3)例子

(3.1)memapp1 memapp2 本身开启他们并没有内存限制,我们的例子为限制memapp2,允许memapp1开启


(3.2)将两个小程序所有者改为用户haha



(3.3)我们从(3.1)中可看出,memapp1启动需要将近4096个内存页,所以为了简单起见,我们将内存限制设置为5000内存页(即500010244B)

vim /etc/cgconfig.conf



3.cpu 在 cgroup 中,并不能像硬件虚拟化方案一样能够定义 CPU 能力,但是能够定义 CPU 轮转的优先级,因此具有较高 CPU 优先级的进程会更可能得到 CPU 运算。 通过将参数写入 cpu.shares ,即可定义改 cgroup 的 CPU 优先级 – 这里是一个相对权重,而非绝对值

(1)没有cpu限制,可看到为99.9%


(2)有了内存限制,设置为100,接近原来1024的十分之一


(3)blkio block IO 相关的统计和限制,byte/operation 统计和限制 (IOPS 等),读写速度限制等,但是这里主要统计的都是同步 IO

(3.1)没有读取限制(安装iotop,用iotop命令查看读取速度)

dd if=/dev/vda of=/dev/null &



(3.2)读取限制



(4)冻结freezer

(4.1)本身存在一进程8924

(4.2)vim /etc/cgconfig

(4.3)若freezer.state状态为FROZEN,则冻结该进程


(4.4)若修改为THAWED,则恢复该进程

标签:Docker 发布于:2019-11-01 23:53:26