上一篇,我们明白了为啥容器内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.gzmkdir 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.0image-20240417104958385docker cp topic topic-test:/usr/bin
加一下可执行权限
docker exec -it topic-test shchmod +x topic
topic
现在的cpu和内存都是容器自己的
image-20240417135005113