APP下载

浅析云计算中Docker容器的资源管理

2020-12-23吴小青

中国管理信息化 2020年21期
关键词:云计算容器资源管理

吴小青

[摘    要] Docker是一个开源的应用容器引擎,用于开发,打包和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到Linux机器上。Docker使得开发者可以用与管理应用程序相同的方式来管理基础架构,利用 Docker的方法来快速交付、测试和部署代码。

本文主要围绕哪些分配给容器的资源可被使用和管理,容器实际使用了多少资源,如何对容器使用的资源进行管理三个问题展开论述。

[关键词] Docker;容器;资源管理;云计算

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2020. 21. 065

[中图分类号] TP315   [文献标识码]  A      [文章编号]  1673 - 0194(2020)21- 0147- 03

0      引    言

云计算领域中,Docker是开发者需要具备的基本技能,它是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache 2.0 协议开源。Docker 是一个用于开发,打包和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker使得开发者可以用与管理应用程序相同的方式来管理基础架构。通过利用 Docker的方法来快速交付、测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

如果开发者想在实际生产环境中使用Docker,并且能够有效地处理问题必须对以下三个问题有深刻的认知:

(1)哪些分配给容器的资源可被使用和管理;

(2)容器实际使用了多少资源;

(3)如何对容器使用的资源进行管理。

1      可管理的资源类型

启动一个容器与启动PC机的程序基本是一致的,它可以使用CPU、内存、网络、I/O、GPU等一些系统资源。这些资源是在启动容器时,需要考虑和可被管理的。比如,可以执行docker run --help 查看docker run命令所支持的全部参数,现在 docker run 命令所支持的参数非常丰富,读者可以自行翻阅资料查看。

2      查看容器实际使用的资源

2.1   docker stats

Docker提供了一个很方便的命令docker stats用来返回运行中的容器的实时数据流,可供我们查看和统计容器所占用的资源情况。以下我们以启动一个Redis容器作为示例来演示。

默认情况下,stats 使用参数-a或--all,命令会每隔 1 秒刷新一次输出内容, 是一种持续的动态流式输出方式,直到按下ctrl + c。而这里使用了一个--no-stream参数,它就只输出一次便会退出了。它输出的各个部分内容的含义:

[CONTAINER]:以短格式显示容器的 ID,是一个容器生命周期内不会变化的信息;

[CPU %]:容器正在使用的 CPU 资源的百分比;

[MEM USAGE / LIMIT]:当前使用的内存和容器最大可以使用的内存;

[MEM %]:以百分比的形式显示内存使用情况,测试用的电脑内存容量为16G;

[NET I/O]:容器通過其网络接口发送和接受到的数据量;

[BLOCK I/O]:容器通过块设备读取和写入的数据量;

[PIDS]:容器创建的进程或线程数。

2.2   docker top

除了上面提到的 docker stats 命令外,Docker还提供了另一个比较简单的命令docker top,用于查看容器中运行的进程信息,支持 ps 命令参数。

3      管理容器使用的资源

3.1   容器的CPU资源管理

CPU和内存是使用容器时尤为关注的资源,对于CPU资源的管理涉及的内容会偏底层一些,有些涉及内核的 CPU 调度器。

可以使用 docker run --help |grep CPU来查看Docker提供了哪些控制 CPU 资源相关的参数。

下面以几个示例来分别进行说明:

3.1.1   默认无限制

以下演示均在一个4核CPU的电脑上进行。

首先,启动一个容器,以体积较小的 Alpine Linux 为例:

然后,在另一个窗口,执行上文中介绍的查看容器资源的命令:

从返回数据可以看出,当前容器内CPU的消耗几乎没有,且 PIDS 为 1,也即是当前只有一个进程。

现在,再切换回刚才启动的容器,执行以下命令:

sha256sum是一个用来计算和检查SHA256信息的命令行工具,而/dev/zero是 Linux系统里一个特殊的设备,它可以提供无限的空字符串。这个命令,会让 sha256sum 持续地读/dev/zero产生的空串,并进行计算,这样的动作会迅速消耗计算机的CPU资源。此时,再来查看容器的资源使用情况:

从返回数据中的CPU使用率可以看出,单个CPU芯片已经在满负荷运转了。此时,我们再新打开一个窗口,进入容器内,执行与上面相同的命令:

猜你喜欢

云计算容器资源管理
Different Containers不同的容器
人事档案管理在人力资源管理中的作用
人力资源管理促进企业绩效提升
企业人力资源管理
难以置信的事情
GIS在森林资源管理中的应用
基于云计算的移动学习平台的设计
实验云:理论教学与实验教学深度融合的助推器
云计算中的存储虚拟化技术应用