Docker中容器日志查看與監(jiān)控的5個(gè)必備排錯(cuò)命令
概述
你有沒有遇到過(guò)這種情況:
- 訪問不了網(wǎng)站,但容器明明在運(yùn)行?
- 應(yīng)用啟動(dòng)失敗,卻不知道哪里錯(cuò)了?
- 想看日志,卻無(wú)從下手?
Docker 提供了強(qiáng)大的監(jiān)控與日志工具,只要掌握幾個(gè)關(guān)鍵命令,你就能像偵探一樣,快速找到問題根源
為什么需要監(jiān)控與日志
容器是“黑盒”——你無(wú)法像傳統(tǒng)服務(wù)器那樣直接登錄查看進(jìn)程或文件。所以,我們必須依賴:
- 日志(Logs):查看應(yīng)用輸出、錯(cuò)誤信息
- 狀態(tài)(Status):了解容器是否運(yùn)行、退出原因
- 資源使用(CPU/內(nèi)存):判斷是否資源不足
- 內(nèi)部運(yùn)行情況:進(jìn)入容器調(diào)試
下面這 5 個(gè)命令,就是你的“排錯(cuò)工具箱”
5 個(gè)必備排錯(cuò)命令
1.docker ps—— 查看容器狀態(tài)
docker ps
查看正在運(yùn)行的容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123 nginx:alpine "/entrypoint.sh" 10 minutes ago Up 10 mins 0.0.0.0:80->80/tcp web-server
如果沒看到你的容器,加 -a 查看所有(包括已停止的):
docker ps -a
關(guān)注 STATUS 列:
Exited (1):表示容器啟動(dòng)失敗,退出碼非 0Restarting:可能配置了重啟策略,但應(yīng)用一直崩潰
2.docker logs—— 查看容器日志(最常用?。?/h3>
這是最重要的排錯(cuò)命令,能告訴你應(yīng)用到底發(fā)生了什么。
docker logs <容器名或ID>
例如:
docker logs web-server
實(shí)用選項(xiàng):
| 選項(xiàng) | 作用 |
|---|---|
| -f | 實(shí)時(shí)跟蹤日志(類似 tail -f) |
| --tail 50 | 只看最后 50 行 |
| -t | 顯示時(shí)間戳 |
# 實(shí)時(shí)查看日志 docker logs -f web-server # 查看最近 100 行 docker logs --tail 100 web-server
提示:應(yīng)用啟動(dòng)失敗時(shí),第一時(shí)間看 logs,通常錯(cuò)誤信息就在這里
3.docker inspect—— 查看容器詳細(xì)信息
當(dāng)你需要深入了解容器的配置時(shí),用它。
docker inspect <容器名>
它會(huì)返回一個(gè)巨大的 JSON,包含:
- IP 地址
- 掛載的卷
- 環(huán)境變量
- 網(wǎng)絡(luò)配置
- 啟動(dòng)命令
- 退出原因(如果容器已停止)
快速查看 IP:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web-server
查看退出狀態(tài):
docker inspect -f '{{.State.Error}}' failed-container
4.docker stats—— 實(shí)時(shí)監(jiān)控資源使用
懷疑容器卡頓、內(nèi)存不足?用它看 CPU 和內(nèi)存占用。
docker stats
輸出:
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O
web-server 0.5% 10MiB / 1.9GiB 0.5% 1.2kB / 0B 0B / 0B
db 2.1% 150MiB / 1GiB 15.0% ...
如果某個(gè)容器 MEM % 接近 100%,很可能被系統(tǒng) OOM Kill(內(nèi)存溢出終止)。
5.docker exec—— 進(jìn)入容器內(nèi)部調(diào)試
有時(shí)候你需要“進(jìn)到容器里”看看文件、運(yùn)行命令
# 進(jìn)入容器的 shell docker exec -it web-server sh
常見用途:
- 檢查配置文件是否存在
- 測(cè)試網(wǎng)絡(luò)連通性(
ping,curl) - 查看目錄內(nèi)容(
ls /app) - 手動(dòng)運(yùn)行應(yīng)用命令測(cè)試
注意:生產(chǎn)環(huán)境慎用,避免誤操作
實(shí)戰(zhàn)排錯(cuò)流程
當(dāng)你的應(yīng)用“打不開”時(shí),按這個(gè)順序排查:
docker ps -a→ 看容器是否在運(yùn)行,退出碼是什么docker logs <容器名>→ 看是否有報(bào)錯(cuò)(如端口沖突、依賴缺失)docker inspect <容器名>→ 檢查端口映射、環(huán)境變量是否正確docker stats→ 看是否資源耗盡docker exec -it <容器名> sh→ 進(jìn)入容器手動(dòng)測(cè)試
大多數(shù)問題,都能通過(guò)這 5 步解決
Docker Compose 怎么排錯(cuò)
如果你用 docker-compose.yml,命令類似:
| 原命令 | Compose 版本 |
|---|---|
| docker logs web | docker compose logs web |
| docker exec web sh | docker compose exec web sh |
| docker ps | docker compose ps |
在項(xiàng)目目錄下運(yùn)行,自動(dòng)識(shí)別 docker-compose.yml
總結(jié)
容器出問題不可怕,關(guān)鍵是知道怎么查。記住這 5 個(gè)核心命令:
docker ps—— 看狀態(tài)docker logs—— 看日志(最重要?。?/li>docker inspect—— 看細(xì)節(jié)docker stats—— 看資源docker exec—— 進(jìn)去調(diào)試
掌握它們,你就能快速定位 90% 的容器問題,不再“一臉懵”
到此這篇關(guān)于Docker中容器日志查看與監(jiān)控的5個(gè)必備排錯(cuò)命令的文章就介紹到這了,更多相關(guān)Docker容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
dockerfile構(gòu)建任意java鏡像的實(shí)現(xiàn)示例
本文主要介紹了dockerfile構(gòu)建任意java鏡像的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-09-09
docker進(jìn)入容器運(yùn)行命令的使用及說(shuō)明
本文介紹了如何使用Docker進(jìn)入容器進(jìn)行調(diào)試、管理和運(yùn)行命令,主要包括使用docker exec、docker attach和nsenter命令進(jìn)入容器的方法,并詳細(xì)介紹了docker inspect命令的使用以及如何獲取容器/鏡像的元數(shù)據(jù)2026-02-02
docker中使用mongodb數(shù)據(jù)庫(kù)詳解(在局域網(wǎng)訪問)
這篇文章主要給大家介紹了在docker中使用mongodb數(shù)據(jù)庫(kù),在局域網(wǎng)訪問的相關(guān)資料,文中將步驟介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
docker+jenkins+gitee配置持續(xù)集成部署方式
這篇文章主要介紹了docker+jenkins+gitee配置持續(xù)集成部署方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
一次wsl2+docker無(wú)法運(yùn)行的經(jīng)歷實(shí)戰(zhàn)記錄
這篇文章主要介紹了在使用WSL2和Docker?Desktop時(shí)遇到的錯(cuò)誤,并提供了解決方案,錯(cuò)誤可能是由于自定義WSL內(nèi)核導(dǎo)致的,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-05-05
使用Docker搭建MySQL數(shù)據(jù)庫(kù)服務(wù)的方法詳解
在現(xiàn)代應(yīng)用程序開發(fā)中,使用數(shù)據(jù)庫(kù)是必不可少的,文將介紹如何使用Docker搭建MySQL數(shù)據(jù)庫(kù)服務(wù),讓你在本地環(huán)境中快速部署一個(gè)MySQL實(shí)例,感興趣的可以了解下2024-03-03

