Docker 容器監(jiān)控澎媒,這四個(gè)命令你必須知道晾蜘!

  1. docker logs 洞察容器內(nèi)部活動(dòng)

  2. docker top 透視容器進(jìn)程世界

  3. docker stats全方位資源監(jiān)控

  4. docker inspect容器的詳細(xì)檔案

今天要介紹命令均服務(wù)于容器運(yùn)行狀態(tài)的觀察邻眷、診斷和性能分析,通過(guò)獲取日志輸出剔交、進(jìn)程列表和資源使用統(tǒng)計(jì)肆饶,可以幫助用戶排查容器內(nèi)部的問(wèn)題、優(yōu)化資源分配或進(jìn)行容量規(guī)劃岖常。由于它們聚焦于容器運(yùn)行時(shí)的監(jiān)控與調(diào)試驯镊,合并在同一起介紹有利于形成完整的監(jiān)控視角。

1. docker logs洞察容器內(nèi)部活動(dòng)

docker logs 命令在容器運(yùn)維竭鞍、故障排查板惑、監(jiān)控告警、審計(jì)合規(guī)笼蛛、性能分析洒放、業(yè)務(wù)洞察、開發(fā)測(cè)試以及容器生命周期管理等多個(gè)方面發(fā)揮著核心作用滨砍,是管理和理解 Docker 容器運(yùn)行狀態(tài)的重要工具。

?  ~ docker run -d -p 3000:3000 --name hello-go hello-go:default
5d301eb6b03f5c6397096fb6efb4193f9970a876a93fbf3a16bf26249fa79efb
?  ~ docker logs hello-go
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
[GIN-debug] GET    /ping                     --> main.main.func2 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :3000
[GIN] 2024/04/13 - 04:06:33 | 200 |      33.754μs |   192.168.31.47 | GET      "/"
[GIN] 2024/04/13 - 04:06:33 | 404 |         903ns |   192.168.31.47 | GET      "/favicon.ico"

運(yùn)行一個(gè)hello-go容器,-d后臺(tái)運(yùn)行惋戏,-p 3000:3000宿主機(jī)3000與容器內(nèi)3000映射领追,--name hello-go命名容器為hello-go,最后跟hello-go:default指定我們啟動(dòng)容器所基于的鏡像响逢。

通過(guò)命令docker logs [容器名稱 or 容器id]绒窑,可以查看容器內(nèi)應(yīng)用的運(yùn)行日志,方便診斷應(yīng)用運(yùn)行期間的問(wèn)題舔亭。應(yīng)用日志文件會(huì)寫入日志文件進(jìn)行存儲(chǔ)些膨,建議使用掛在卷的方式持久化存儲(chǔ),防止因容器停止或刪除钦铺,丟失數(shù)據(jù)订雾。

可以在加-f,用于實(shí)時(shí)跟蹤指定容器的日志輸出矛洞,實(shí)時(shí)打印容器新增的日志條目洼哎。docker logs hello-go -f

2. docker top透視容器進(jìn)程世界

docker top 命令主要用于實(shí)時(shí)監(jiān)控容器內(nèi)部進(jìn)程狀態(tài)、資源使用情況沼本,以及進(jìn)行故障排查、安全審計(jì)抽兆、資源分配優(yōu)化、自動(dòng)化監(jiān)控等任務(wù)辫红,是管理和運(yùn)維 Docker 容器過(guò)程中必不可少的診斷和分析工具。

?  ~ docker top hello-go
UID                 PID                 PPID                C                   STIME               TTY
TIME                CMD
root                1232                1213                0                   00:06               ?
00:00:00            ./app

使用docker top hello-go命令厉熟,根據(jù)輸出容器內(nèi)部只有一個(gè)運(yùn)行中的進(jìn)程(PID 為 1232),該進(jìn)程以 root 用戶身份運(yùn)行揍瑟,其父進(jìn)程為 PID 1213。進(jìn)程啟動(dòng)于6分鐘前绢片,未關(guān)聯(lián)任何終端,且自啟動(dòng)以來(lái)未顯著占用CPU時(shí)間底循。進(jìn)程的主要任務(wù)是執(zhí)行當(dāng)前目錄下的 app 可執(zhí)行文件。

輸出解釋

  • UID: 表示在容器內(nèi)部運(yùn)行進(jìn)程的用戶標(biāo)識(shí)符(User ID)熙涤。
  • PID: 進(jìn)程標(biāo)識(shí)符(Process ID)阁苞。
  • PPID: 父進(jìn)程標(biāo)識(shí)符(Parent Process ID)困檩。
  • C: CPU 使用優(yōu)先級(jí)或nice值。數(shù)值越小那槽,優(yōu)先級(jí)越高悼沿,占用CPU資源的可能性越大。此處為 0骚灸,表示該進(jìn)程具有普通(默認(rèn))的CPU使用優(yōu)先級(jí)糟趾。
  • STIME: 進(jìn)程啟動(dòng)時(shí)間。顯示為 00:06甚牲,表示該進(jìn)程在當(dāng)前時(shí)間的前6分鐘啟動(dòng)义郑。
  • TTY: 終端類型。符號(hào) ? 表示該進(jìn)程沒有關(guān)聯(lián)到終端(non-TTY process)丈钙,通常后臺(tái)服務(wù)或守護(hù)進(jìn)程會(huì)有這樣的標(biāo)記非驮。運(yùn)行容器加-t會(huì)為容器分配偽TTY。
  • TIME: 進(jìn)程累計(jì)占用CPU時(shí)間著恩。顯示為 00:00:00院尔,表示該進(jìn)程自啟動(dòng)以來(lái),尚未占用過(guò)CPU時(shí)間或者統(tǒng)計(jì)周期內(nèi)未占用CPU時(shí)間喉誊。
  • CMD: 執(zhí)行的命令及參數(shù)邀摆。此處為 ./app,表示該進(jìn)程正在運(yùn)行一個(gè)名為 app 的可執(zhí)行文件伍茄,該文件位于當(dāng)前工作目錄(.)下栋盹。

3. docker stats全方位資源監(jiān)控

docker stats 命令是監(jiān)控容器資源使用情況、進(jìn)行性能分析與調(diào)優(yōu)敷矫、容量規(guī)劃例获、故障排查、智能調(diào)度曹仗、合規(guī)審計(jì)以及自動(dòng)化運(yùn)維的核心工具榨汤,對(duì)于有效管理大規(guī)模容器化環(huán)境、保障服務(wù)質(zhì)量和降低成本具有重要意義怎茫。會(huì)顯示指定容器(或所有正在運(yùn)行的容器)的 CPU收壕、內(nèi)存、網(wǎng)絡(luò)和磁盤 I/O 的使用統(tǒng)計(jì)信息轨蛤。

使用命令docker stats hello-go

?  ~ docker stats hello-go
CONTAINER ID   NAME       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O     PIDS
5d301eb6b03f   hello-go   0.00%     8.191MiB / 3.823GiB   0.21%     6.64kB / 4.04kB   7.11MB / 0B   6

輸出解釋

  1. CONTAINER ID: 容器的唯一標(biāo)識(shí)符蜜宪,一個(gè)長(zhǎng)字符串,如 5d301eb6b03f祥山。
  2. NAME: 容器的名稱圃验,如 hello-go。這是您在創(chuàng)建容器時(shí)通過(guò) --name 參數(shù)指定的名稱缝呕,或者 Docker 自動(dòng)賦予的名稱斧散。
  3. CPU %: 容器當(dāng)前使用的 CPU 占比颅湘。這里始終顯示為 0.00%,說(shuō)明在采樣時(shí)刻瞻鹏,容器幾乎未使用 CPU 資源新博。
  4. MEM USAGE / LIMIT: 容器當(dāng)前使用的內(nèi)存(MEM USAGE)及其內(nèi)存限制(LIMIT)。如 8.191MiB / 3.823GiB 表示容器使用了 8.191 MiB 內(nèi)存原献,其內(nèi)存限制為 3.823 GiB埂淮。后面的 0.21% 是內(nèi)存使用量相對(duì)于限制的百分比,說(shuō)明容器的內(nèi)存使用非常低讲仰。
  5. NET I/O: 容器的網(wǎng)絡(luò)輸入(I/O)和輸出(O)流量鄙陡。如 6.64kB / 4.04kB 表示容器接收了 6.64 kB 的數(shù)據(jù)躏啰,發(fā)送了 4.04 kB 的數(shù)據(jù)给僵。這些值都很小,說(shuō)明容器在網(wǎng)絡(luò)通信方面幾乎沒有活動(dòng)培漏。
  6. BLOCK I/O: 容器對(duì)存儲(chǔ)(磁盤)的讀扰票(I/O)和寫入(O)量侧甫。如 7.11MB / 0B 表示容器向磁盤寫入了 7.11 MB 的數(shù)據(jù),沒有從磁盤讀取數(shù)據(jù)咒锻。寫入量稍大,但總體來(lái)看蒿辙,容器的磁盤活動(dòng)也相當(dāng)有限思灌。
  7. PIDS: 容器內(nèi)當(dāng)前運(yùn)行的進(jìn)程數(shù)泰偿。這里始終顯示為 6蜈垮,表示容器內(nèi)部有 6 個(gè)進(jìn)程正在運(yùn)行。

綜上所述调塌,docker logs烟阐、docker topdocker stats這三個(gè)命令構(gòu)成了Docker容器日志與監(jiān)控的核心工具集紊扬,分別從日志輸出餐屎、進(jìn)程信息和資源使用三個(gè)維度為運(yùn)維人員提供了全面的容器觀測(cè)手段腹缩。熟練運(yùn)用這些命令,不僅能提升日常運(yùn)維效率润讥,還能在問(wèn)題發(fā)生時(shí)迅速定位根源楚殿,確保容器化環(huán)境的穩(wěn)定運(yùn)行和高效利用脆粥。實(shí)現(xiàn)容器監(jiān)控,為容器化應(yīng)用的長(zhǎng)期穩(wěn)健運(yùn)行保駕護(hù)航规伐。

4. docker inspect容器的詳細(xì)檔案

docker inspect 命令是Docker容器管理中的一個(gè)重要工具匣缘,用于獲取指定容器的詳細(xì)配置孵户、狀態(tài)及元數(shù)據(jù)信息。這些信息以JSON格式輸出,包含容器的創(chuàng)建參數(shù)竖配、運(yùn)行狀態(tài)进胯、網(wǎng)絡(luò)配置、存儲(chǔ)掛載胁镐、資源限制诸衔、環(huán)境變量等諸多細(xì)節(jié)笨农。

以下是使用 docker inspect 命令查詢 hello-go 容器詳細(xì)信息的示例:

?  ~ docker inspect hello-go

在這條命令中,hello-go 是您要查詢?cè)敿?xì)信息的容器名稱或ID竭宰。執(zhí)行命令后,Docker 會(huì)返回一個(gè)詳細(xì)的JSON對(duì)象廓旬,包含容器的所有相關(guān)信息嗤谚。由于JSON輸出通常較為冗長(zhǎng)且結(jié)構(gòu)化,不在展示旁赊,請(qǐng)運(yùn)行命令查看终畅。

通過(guò) docker inspect -f '{{json .<field>}}' <container> 可以只輸出指定字段的信息离福。

例如炼蛤,查詢?nèi)萜鱅P地址:docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' hello-go理朋。

輸出解釋

  • Id: 容器的唯一標(biāo)識(shí)符(長(zhǎng)哈希字符串)嗽上。
  • Name: 容器的名稱彼念,即創(chuàng)建時(shí)通過(guò) --name 參數(shù)指定的名稱或Docker自動(dòng)分配的短名稱浅萧。
  • State: 容器當(dāng)前運(yùn)行狀態(tài)惯殊,包括 RunningPaused务热、Restarting崎岂、Dead 等狀態(tài)以及相關(guān)的詳細(xì)信息闪湾,如啟動(dòng)時(shí)間、退出代碼濒憋、是否可以自動(dòng)重啟等凛驮。
  • Config: 容器創(chuàng)建時(shí)的配置信息黔夭,如命令本姥、入口點(diǎn)婚惫、環(huán)境變量颜屠、工作目錄甫窟、用戶粗井、資源限制(CPU浇衬、內(nèi)存)等耘擂。
  • NetworkSettings: 容器的網(wǎng)絡(luò)配置醉冤,包括網(wǎng)絡(luò)模式(橋接、主機(jī)篙悯、none蚁阳、自定義網(wǎng)絡(luò))、端口映射鸽照、IP地址螺捐、DNS配置等。
  • Mounts: 容器掛載的數(shù)據(jù)卷或綁定掛載信息,包括源路徑定血、目標(biāo)路徑赔癌、類型(volume、bind澜沟、tmpfs)等灾票。
  • Image: 容器基于的鏡像信息,包括鏡像ID铝条、鏡像名稱悼枢、標(biāo)簽等。
  • Labels: 容器上設(shè)置的標(biāo)簽(鍵值對(duì)),用于組織和篩選容器。
  • HostConfig: 與主機(jī)相關(guān)的配置,如內(nèi)存课锌、CPU限制踢步、設(shè)備映射、特權(quán)模式唆缴、日志驅(qū)動(dòng)趟紊、重啟策略等铛嘱。

綜上所述,docker logsdocker topdocker statsdocker inspect這四個(gè)命令構(gòu)成了Docker容器日志與監(jiān)控的核心工具集衷佃,分別從日志輸出、進(jìn)程信息和資源使用、容器的詳盡配置信息四個(gè)維度為運(yùn)維人員提供了全面的容器觀測(cè)手段。熟練運(yùn)用這些命令鸭蛙,不僅能提升日常運(yùn)維效率肪获,還能在問(wèn)題發(fā)生時(shí)迅速定位根源寒锚,確保容器化環(huán)境的穩(wěn)定運(yùn)行和高效利用。實(shí)現(xiàn)容器監(jiān)控拣技,為容器化應(yīng)用的長(zhǎng)期穩(wěn)健運(yùn)行保駕護(hù)航。

忍不住要加個(gè)關(guān)注!不是我吹守呜,但你會(huì)后悔沒關(guān)注的萍歉!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末攻询,一起剝皮案震驚了整個(gè)濱河市拯杠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拜隧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盏袄,死亡現(xiàn)場(chǎng)離奇詭異逛尚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人履恩,你說(shuō)我怎么就攤上這事∫叮” “怎么了认然?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵补憾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我卷员,道長(zhǎng)盈匾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任毕骡,我火速辦了婚禮削饵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挺峡。我一直安慰自己葵孤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布橱赠。 她就那樣靜靜地躺著尤仍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狭姨。 梳的紋絲不亂的頭發(fā)上宰啦,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音饼拍,去河邊找鬼赡模。 笑死,一個(gè)胖子當(dāng)著我的面吹牛师抄,可吹牛的內(nèi)容都是我干的漓柑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼叨吮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辆布!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茶鉴,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锋玲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涵叮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惭蹂,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年割粮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盾碗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舀瓢,死狀恐怖置尔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤榜轿,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站朵锣,受9級(jí)特大地震影響谬盐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诚些,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一飞傀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诬烹,春花似錦砸烦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至家破,卻和暖如春颜说,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汰聋。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工门粪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烹困。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓玄妈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親髓梅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拟蜻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容