- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
docker实战配置
本文作者是Red Hat的软件工程师 -
注意:我们假设你在一个systemd可用的系统上运行了 Docker。如果你是使用RHEL/CentOS 7+或Fedora 19+,systemd肯定可用,但是请注意在不同的systemd版本之间可能配置选项会有变化。有疑问时,使用你所工作的系统的systemd的帮助说明。
1. 基础概念
Docker使用?cgroups?归类运行在容器中的进程。这使你可以管理一组进程的资源,可想而知,这是非常宝贵的。?如果你运行一个操作系统,其使用?systemd管理服务。每个进程(不仅仅是容器中的进程)都将被放入一个cgroups树中。如果你运行systemd-cgls命令,你自己可以看到这个结构:?
$?systemd-cgls
├─1?/usr/lib/systemd/systemd?--switched-root?--system?--deserialize?22
├─machine.slice
│?└─machine-qemu\x2drhel7.scope
│???└─29898?/usr/bin/qemu-system-x86_64?-machine?accel=kvm?-name?rhel7?-S?-machine?pc-i440fx-1.6,accel=kvm,usb=off?-cpu?SandyBridge?-m?2048
├─system.slice
│?├─avahi-daemon.service
│?│?├─?905?avahi-daemon:?running?[mistress.local
│?│?└─1055?avahi-daemon:?chroot?helpe
│?├─dbus.service
│?│?└─890?/bin/dbus-daemon?--system?--address=systemd:?--nofork?--nopidfile?--systemd-activation
│?├─firewalld.service
│?│?└─887?/usr/bin/python?-Es?/usr/sbin/firewalld?--nofork?--nopid
│?├─lvm2-lvmetad.service
│?│?└─512?/usr/sbin/lvmetad?-f
│?├─abrtd.service
│?│?└─909?/usr/sbin/abrtd?-d?-s
│?├─wpa_supplicant.service
│?│?└─1289?/usr/sbin/wpa_supplicant?-u?-f?/var/log/wpa_supplicant.log?-c?/etc/wpa_supplicant/wpa_supplicant.conf?-u?-f?/var/log/wpa_supplica
│?├─systemd-machined.service
│?│?└─29899?/usr/lib/systemd/systemd-machined
[SNIP]
当我们想管理资源的时候,这个方法提供了很大的灵活性,因为我们可以分别管理每个组。尽管这篇博客文章着重于容器,但同样的原则也适用于其他的进程。?
注意:如果你想知道更多关于systemd的知识,我强烈推荐RHEL 7的?Resource Management and Linux Containers Guide(资源管理与Linux容器指南)。
1.1 测试说明
在我的例子中,我将使用stress工具来帮助我生成容器的一些负载,因此我可以真实地看到资源的申请限制。我使用这个Dockerfile创建了一个名为stress的定制的Docker镜像:?
FROM?fedora:latest
RUN?yum?-y?install?stress??yum?clean?all
ENTRYPOINT?[stress]
1.2 关于资源报告工具的说明
你使用这个工具来报告cgroups不知道的使用情况如top,/proc/meminfo等等。这意味着你将报告关于这台主机的信息即使是它们在容器内运行。关于这个主题,我发现了?一篇不错的文章来自于Fabio Kung。读一读它吧。?因此,我们能做什么??如果你想快速发现在该主机上使用最多资源的容器(或是最近的所有systemd服务),我推荐systemd-cgtop命令:?
$?systemd-cgtop
Path????????????????????????????????????Tasks???%CPU???Memory??Input/s?Output/s
/?????????????????????????????????????????226???13.0????
文档评论(0)