上一篇,我们明白了为啥容器内top查看的是宿主机的资源消耗。

这里分享一个工具,在容器里代替top命令用于查看容器自身的资源消耗

topic

topic 即 top in container的缩写,意味容器内的top命令

针对容器内查看系统状态的问题,目前比较通用的解决方案是通过lxcfs,将容器中相应的文件通过fuse劫持read调用,在打开时显示为容器信息,从而统一解决各种系统状态诊断工具的问题。

考虑到部署lxcfs有一定的成本,topic(top in container)的思路则是改造top命令,去适配容器,读取容器中反映真实运行情况的系统文件,从而展示正确的容器运行信息,对于用户而言成本更低。

安装使用

下载地址:silenceshell/topic: top in container. (github.com)

make

下载的是源码,需要自己make一下,发出二进制包

wget https://github.com/silenceshell/topic/archive/refs/tags/0.0.4.tar.gz
mkdir topic && tar -zxvf 0.0.4.tar.gz -C topic
cd topic/topic-0.0.4/ && make build

复制到需要的容器

假设我有一个创建一个2c2g限制的业务容器,比如tomcat

docker run -d --name topic-test --cpus 2 --memory 2g tomcat:9.0

777a25062047a01f2b34470e51e1ee02.jpeg

image-20240417104958385docker cp topic topic-test:/usr/bin

加一下可执行权限

docker exec -it topic-test sh
chmod +x topic
topic

现在的cpu和内存都是容器自己的

6c9401f165553e5c3ba40f05421a0a23.jpeg

image-20240417135005113


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐