6. 管理容器的资源
6.1 基础知识: linux control groups
Linux Cgroup 可让您为系统中所运行任务(进程)的用户定义组 群分配资源— 比如 CPU 时间、系统内存、网络带宽或者这些资源 的组合。您可以监控您配置的cgroup,拒绝cgroup 访问某些资源, 甚至在运行的系统中动态配置您的 cgroup。所以,可以将 controll groups 理解为 controller (system resource) (for) (process) groups,也就是是说它以一组进程为目标进行系统资源分配和控 制。
6.1.1 Linux control groups主要提供了如下功能
- Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。
- Prioritization: 优先级控制,比如:CPU利用和磁盘IO吞吐。
- Accounting: 一些审计或一些统计,主要目的是为了计费。
- Control: 挂起进程,恢复执行进程。
6.1.2 查看linux内核中是否启用了cgroup
6.2 docker对cpu的使用
6.2.1 dockefile构建一个镜像
保存下面的文件命名为: Dockerfile
FROM centos:lates
RUN yum install -y epel-release && yum install -y stress
ENTRYPOINT["stress"]
Docker能够指定(通过运行命令的-c或者--cpu-shares开关)给一个容器的可 用的CPU分配值。这是一个相对权重,与实际的处理速度无关。每个新的容 器默认的将有1024CPU配额,当我们单独讲它的时候,这个值并不意味着什 么。但是如果我们启动两个容器并且两个都将使用 100%CPU,CPU时间将在 这两个容器之间平均分割,因为它们两个都有同样的CPU配额(为了简单起 见,假设没有任何其他进程在运行)
使用下面的方式启动两个容器,运行之前创建好的mycentos
docker run -itd -c 1024 --cpus 4 centos:7
docker run -itd -c 512 --cpus 4 centos:7
注意:第一个容器占用CPU的权重是1024;第二个容器是512
systemctl set-property docker- a92daccba6983f210bf28c4f4f6e2c4c579d58f91a16d4702ee8e4ae7f8a0f5f.sc ope CPUShares=1024
6.3 docker对内存的使用
- 第一件事需要注意的是,默认一个容器可以使用主机上的所有内存。
- 如果你想为容器中的所有进程限制内存,使用docker run命令的 -m开 关即可。你可以使用bytes值定义它的值或是添加后缀(k,m或g)。
- • 例如:docker run -it -m 128m centos
- 为了显示限制的实际情况,我将再次使用我的mycentos镜像.
- • docker run -it --rm -m 128m mycentos --vm 1 --vm-bytes 128M --vm-hang 0 • -m128m:用于限制容器使用的内存大小 • --vm1:产生一个内存分配的进程 • --vm-bytes 128M:每次分配大小为128M
- • --vm-hang 0:分配后立即释放;如果为100,表示分配后不释放,测试100秒
6.4 docker对I/O的使用
使用命令docker help run | grep -E 'bps|IO'得到Docker对I/O管理的 相关参数,如下:
7. 搭建Harbor私有仓库
7.1 什么是Harbor
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然 Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面 考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是 由VMware公司开源的企业级的Docker Registry管理项目,它包括 权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像 复制和中文支持等功能。
7.2 安装docker和docker compose
# 安装docker
yum install docker
#安装docker compose
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 查看docker compose的版本
docker-compose --version
7.3 安装Harbor
Harbor支持在线和离线安装方式,这里,我们使用离线方式,先下载Harbor安装包:
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz
7.3.1 解压离线安装包
tar xzvf harbor-offline-installer-v1.5.3.tgz
mv harbor /usr/local/harbor
cd /usr/local/harbor
7.3.2 配置Harbor
核心配置文件:$HARBOR_HOME/harbor.cfg
# 监听地址
hostname = harbor主机的IP地址或者主机名 # 登录密码
harbor_admin_password = 123456
# 只允许管理员可以创建项目 project_creation_restriction = everyone
7.3.3 安装Harbor
./prepare #配置Harbor
./install.sh #安装Harbor
7.3.4 访问Harbor
输入浏览器:主机ip, 如下:
默认的账户为 admin,密码为 Harbor12345。
7.4 在Docker客户机上通过终端访问harbor
- vi /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd --insecure-registry my.harbor.com , 其中:my.harbor.com是harbor运行主机的hostname
- 创建/etc/docker/daemon.json文件,在文件中指定仓库地址
cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["my.harbor.com"] }
EOF
重启Docker
systemctl daemon-reload
systemctl restart docker
重启Docker
systemctl daemon-reload
systemctl restart docker
重启Docker
systemctl daemon-reload
systemctl restart docker
重启Docker
systemctl daemon-reload
systemctl restart docker
7.5 验证环境
使用docker login登录:
docker login my.harbor.com
- 创建Dockerfile
FROM centos
ENV TZ "Asia/Shanghai"
- 编译Dockerfile
docker build -t **my.harbor.com**/library/mycentos .
- 使用docker images查看生产的镜像
- 将镜像上传到私有的harbor镜像仓库
docker push **my.harbor.com**/library/mycentos
故事凌
明天能否加个鸡腿!
稀罕作者