詳解如何查看 docker 容器使用的資源
在容器的使用過程中,如果能及時(shí)的掌握容器使用的系統(tǒng)資源,無論對開發(fā)還是運(yùn)維工作都是非常有益的。幸運(yùn)的是 docker 自己就提供了這樣的命令:docker stats。
默認(rèn)輸出
docker stats 命令用來顯示容器使用的系統(tǒng)資源。不帶任何選項(xiàng)執(zhí)行 docker stats 命令:
$ docker stats
默認(rèn)情況下,stats 命令會(huì)每隔 1 秒鐘刷新一次輸出的內(nèi)容直到你按下 ctrl + c。下面是輸出的主要內(nèi)容:
[CONTAINER]:以短格式顯示容器的 ID。
[CPU %]:CPU 的使用情況。
[MEM USAGE / LIMIT]:當(dāng)前使用的內(nèi)存和最大可以使用的內(nèi)存。
[MEM %]:以百分比的形式顯示內(nèi)存使用情況。
[NET I/O]:網(wǎng)絡(luò) I/O 數(shù)據(jù)。
[BLOCK I/O]:磁盤 I/O 數(shù)據(jù)。
[PIDS]:PID 號。
只返回當(dāng)前的狀態(tài)
如果不想持續(xù)的監(jiān)控容器使用資源的情況,可以通過 --no-stream 選項(xiàng)只輸出當(dāng)前的狀態(tài):
$ docker stats --no-stream
這樣輸出的結(jié)果就不會(huì)變化了,看起來省勁不少。
只輸出指定的容器
如果我們只想查看個(gè)別容器的資源使用情況,可以為 docker stats 命令顯式的指定目標(biāo)容器的名稱或者是 ID:
$ docker stats --no-stream registry 1493
當(dāng)有很多的容器在運(yùn)行時(shí),這樣的結(jié)果看起來會(huì)清爽一些。這里的 registry 和 1493 分別是容器的名稱和容器的 ID。注意,多個(gè)容器的名稱或者是 ID 之間需要用空格進(jìn)行分割。
細(xì)心的同學(xué)可能已經(jīng)發(fā)現(xiàn)了,第一列不再顯示默認(rèn)的容器 ID,而是顯示了我們傳入的容器名稱和 ID?;诖耍覀兛梢酝ㄟ^簡單的方式使用容器的名稱替代默認(rèn)輸出中的容器 ID:
$ docker stats $(docker ps --format={{.Names}})
用容器的名稱替代 ID 后輸出的結(jié)果是不是友好一些?
格式化輸出的結(jié)果
我們在前面搞了點(diǎn)小手段把輸出中的容器 ID 替換成了名稱。其實(shí) docker stats 命令支持我們通過 --format 選項(xiàng)自定義輸出的內(nèi)容和格式:
$ docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
上面的命令中我們只輸出了 Name, CPUPerc 和 Memusage 三列。下面是自定義的格式中可以使用的所有占位符:
.Container 根據(jù)用戶指定的名稱顯示容器的名稱或 ID。
.Name 容器名稱。
.ID 容器 ID。
.CPUPerc CPU 使用率。
.MemUsage 內(nèi)存使用量。
.NetIO 網(wǎng)絡(luò) I/O。
.BlockIO 磁盤 I/O。
.MemPerc 內(nèi)存使用率。
.PIDs PID 號。
有了這些信息我們就可以完全按照自己的需求或者是偏好來控制 docker stats 命令輸出的內(nèi)容了。
除了以 table 格式輸出結(jié)果,還可以通過 format 選項(xiàng)輸出 json 格式的結(jié)果:
$ docker stats --no-stream --format \ "{\"container\":\"{{ .Container }}\",\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"cpu\":\"{{ .CPUPerc }}\"}"
總結(jié)
通過 docker stats 命令我們可以看到容器使用系統(tǒng)資源的情況。這為我們進(jìn)一步的約束容器可用資源或者是調(diào)查與資源相關(guān)的問題提供了依據(jù)。除了 docker 自帶的命令,像 glances 等工具也已經(jīng)支持查看容器使用的資源情況了,有興趣的朋友可以去了解一下。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker-compose實(shí)現(xiàn)wireshark對linux主機(jī)進(jìn)行抓包
這篇文章主要為大家介紹了docker-compose實(shí)現(xiàn)wireshark對linux主機(jī)進(jìn)行抓包腳本示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12docker swarm如何在指定的node上運(yùn)行指定的容器
這篇文章主要介紹了docker swarm如何在指定的node上運(yùn)行指定的容器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07linux環(huán)境部署及docker安裝redis的方法
這篇文章主要介紹了linux環(huán)境部署及docker安裝redis的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08基于docker部署skywalking實(shí)現(xiàn)全鏈路監(jiān)控功能
這篇文章主要介紹了基于docker部署skywalking實(shí)現(xiàn)全鏈路監(jiān)控,skywalking提供了在很多不同的場景下用于觀察和監(jiān)控分布式系統(tǒng)的方式,文中給大家介紹如何快速部署skywalking全鏈路監(jiān)控,感興趣的朋友一起看看吧2022-03-03在Docker Compose中獲取最新鏡像的多種方法總結(jié)
Docker 鏡像是 Docker 容器的基礎(chǔ),鏡像包含了應(yīng)用程序所需的所有文件和依賴,Docker-Compose 默認(rèn)不會(huì)自動(dòng)拉取最新的鏡像版本,這可能會(huì)導(dǎo)致使用過時(shí)的鏡像,從而錯(cuò)過重要的更新,為了確保 Docker-Compose 始終使用最新的鏡像,我們可以采用多種方法,以下將詳細(xì)介紹這些方法2024-08-08docker 使用CMD或者ENTRYPOINT命令同時(shí)啟動(dòng)多個(gè)服務(wù)
這篇文章主要介紹了docker 使用CMD或者ENTRYPOINT命令同時(shí)啟動(dòng)多個(gè)服務(wù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11docker?run?-d和docker?run?-it的區(qū)別詳解
記得第一次接觸docker的時(shí)候,教程中寫著docker?run?-it之類的命令,當(dāng)時(shí)對這個(gè)-it選項(xiàng)是一知半解,下面這篇文章主要給大家介紹了關(guān)于docker?run?-d和docker?run?-it的區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-05-05