Docker容器排錯必知的8個命令詳解
作為一名IT運(yùn)維工程師,日常與Docker容器打交道是必修課。當(dāng)容器出現(xiàn)故障時,快速定位問題是我們的核心能力。今天給大家分享8個最實用的Docker排錯命令。
一、docker logs -f— 查看容器日志
docker logs命令介紹
用途:獲取容器的標(biāo)準(zhǔn)輸出(stdout)和標(biāo)準(zhǔn)錯誤(stderr)日志,是定位應(yīng)用層面問題的核心命令。
常用選項:
| 選項 | 說明 |
|---|---|
-f, --follow | 實時跟蹤日志輸出 |
--tail N | 只顯示最后N行 |
--since | 顯示指定時間后的日志,如--since 10m |
-t, --timestamps | 顯示時間戳 |
具體示例:
排錯第一步永遠(yuǎn)是看日志。docker logs 可以查看容器的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤:
# 查看最近100行日志 docker logs --tail 100 my-container # 實時追蹤日志變化 docker logs -f my-container # 查看指定時間段的日志 docker logs --since 2024-01-01T00:00:00 my-container
典型問題:當(dāng)容器啟動立即退出時,先用docker logs查看錯誤輸出(如配置文件語法錯誤、端口沖突、依賴服務(wù)不可達(dá)等)。
二、docker inspect— 檢查容器詳細(xì)信息
docker inspect命令介紹
用途:以JSON格式輸出容器或鏡像的詳細(xì)配置信息,包括網(wǎng)絡(luò)設(shè)置、掛載卷、環(huán)境變量、啟動命令、狀態(tài)等。
常用選項:
| 選項 | 說明 |
|---|---|
-f, --format | 使用Go模板過濾指定字段 |
具體示例:
docker inspect 返回容器的完整配置和狀態(tài)信息,包括網(wǎng)絡(luò)、掛載、環(huán)境變量等:
# 查看容器完整信息
docker inspect my-container
# 只看容器IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container
# 查看容器掛載卷
docker inspect -f '{{json .Mounts}}' my-container | python3 -m json.tool
典型問題:
- 容器網(wǎng)絡(luò)不通?用
inspect查看NetworkSettings下的IP、端口映射、網(wǎng)橋模式。 - 容器掛載卷不生效?查看
Mounts字段確認(rèn)源路徑和目標(biāo)路徑是否正確。 - 容器為什么重啟?查看
State字段中的ExitCode和Error信息。
三、docker exec -it— 進(jìn)入容器內(nèi)部排查
docker exec命令介紹
用途:在正在運(yùn)行的容器內(nèi)部執(zhí)行命令,相當(dāng)于SSH進(jìn)入容器,用于交互式排查。
常用選項:
| 選項 | 說明 |
|---|---|
-it | 分配交互式終端(常用組合) |
-d | 后臺執(zhí)行命令 |
-e | 設(shè)置環(huán)境變量 |
具體示例:
直接進(jìn)入容器內(nèi)部,查看文件系統(tǒng)、運(yùn)行進(jìn)程、配置文件:
# 進(jìn)入容器bash docker exec -it my-container /bin/bash # 在容器內(nèi)執(zhí)行命令 docker exec my-container cat /etc/config/app.conf # 查看容器內(nèi)進(jìn)程 docker exec my-container ps aux
典型排查動作:
- 檢查進(jìn)程:
ps aux、top - 查看端口監(jiān)聽:
netstat -tlnp、ss -tlnp - 測試網(wǎng)絡(luò)連通性:
curl localhost:8080、ping 8.8.8.8 - 查看配置文件:
cat /app/config.yml - 檢查環(huán)境變量:
env
注意:容器需要包含shell(如bash、sh)才能交互式進(jìn)入,否則只能執(zhí)行單條命令。
四、docker top— 查看容器內(nèi)運(yùn)行的進(jìn)程
docker top命令介紹
用途:顯示容器內(nèi)運(yùn)行的進(jìn)程列表(類似Linux的top命令),幫助定位進(jìn)程級問題。
常用選項:無特殊選項,支持ps命令的參數(shù)(如aux)。
具體示例:
快速確認(rèn)容器內(nèi)服務(wù)是否正常啟動:
docker top my-container
典型問題:
- 容器內(nèi)某個子進(jìn)程僵死:通過
docker top找到PID,再用docker exec進(jìn)入后kill。 - 惡意進(jìn)程或意外啟動的額外進(jìn)程:通過進(jìn)程列表發(fā)現(xiàn)異常。
五、docker stats— 實時監(jiān)控資源占用
docker stats命令介紹
用途:實時顯示容器的CPU、內(nèi)存、網(wǎng)絡(luò)IO和磁盤IO使用情況,用于性能瓶頸排查。
常用選項:
| 選項 | 說明 |
|---|---|
--no-stream | 只輸出一次當(dāng)前狀態(tài) |
--format | 自定義輸出格式 |
具體示例:
實時查看容器的CPU、內(nèi)存、網(wǎng)絡(luò)使用情況:
# 監(jiān)控所有容器 docker stats # 監(jiān)控指定容器 docker stats my-container
典型問題:
- 容器CPU持續(xù)100%:可能存在死循環(huán)或計算密集任務(wù)。
- 內(nèi)存不斷增長:可能存在內(nèi)存泄漏,需結(jié)合
docker exec進(jìn)入容器用top或free進(jìn)一步分析。 - 網(wǎng)絡(luò)IO異常高:檢查是否有異常流量或日志刷屏。
六、docker events— 查看Docker事件流
docker events命令介紹
用途:實時輸出Docker守護(hù)進(jìn)程產(chǎn)生的事件流,如容器創(chuàng)建、啟動、停止、銷毀、健康檢查失敗等。
常用選項:
| 選項 | 說明 |
|---|---|
--filter | 按類型、標(biāo)簽、時間等過濾 |
--since / --until | 指定時間范圍 |
具體示例:
實時跟蹤Docker守護(hù)進(jìn)程的事件,適合排查容器重啟、網(wǎng)絡(luò)變化等問題:
docker events
典型問題:
- 容器頻繁重啟:查看事件流中是否有
die和start反復(fù)出現(xiàn)。 - 健康檢查失?。和ㄟ^事件看到
health_status: unhealthy,再配合docker inspect查看健康檢查配置。
七、docker system df— 檢查磁盤空間占用
磁盤滿了?看看是誰占了空間:
docker system df # 查看詳情 docker system df -v
八、docker diff— 查看容器文件系統(tǒng)變更
查看容器啟動后文件系統(tǒng)的變化,排查配置丟失或異常修改:
docker diff my-container
總結(jié)
這8個命令涵蓋了Docker排錯的完整鏈路:
| 命令 | 用途 | 優(yōu)先級 |
|---|---|---|
docker logs | 看日志,定位錯誤原因 | ??? |
docker inspect | 查配置,確認(rèn)網(wǎng)絡(luò)/掛載 | ??? |
docker exec | 進(jìn)容器,深入排查 | ?? |
docker top | 看進(jìn)程,確認(rèn)服務(wù)狀態(tài) | ?? |
docker stats | 監(jiān)控資源,排查性能 | ?? |
docker events | 跟蹤事件流 | ? |
docker system df | 查磁盤占用 | ? |
docker diff | 查看文件變更 | ? |
80%的容器問題都可以通過前3個命令定位到原因。建議收藏,遇到容器故障時拿出來照著排查。
到此這篇關(guān)于Docker容器排錯必知的8個命令詳解的文章就介紹到這了,更多相關(guān)Docker容器排錯命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Docker實現(xiàn)MySQL容器中批量導(dǎo)出所有數(shù)據(jù)庫
在使用 Docker 部署 MySQL 的場景中,經(jīng)常會需要一次性導(dǎo)出容器內(nèi)除系統(tǒng)庫以外的所有數(shù)據(jù)庫,下面小編就和大家介紹一下具體實現(xiàn)方法,有需要的小伙伴可以了解下2025-12-12
docker容器查看所有沒使用的鏡像并刪除的實現(xiàn)
本文主要介紹了docker容器查看所有沒使用的鏡像并刪除的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Docker容器搭建并運(yùn)行實現(xiàn)過程詳解
這篇文章主要介紹了Docker容器搭建并運(yùn)行實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
2個節(jié)點的docker容器網(wǎng)絡(luò)實現(xiàn)通信過程
文章介紹了五種實現(xiàn)跨節(jié)點Docker容器通信的方法,涵蓋host網(wǎng)絡(luò)、Swarm集群、網(wǎng)絡(luò)插件和自建VPN,適用于不同場景如調(diào)試、生產(chǎn)環(huán)境及高可用需求,并推薦根據(jù)部署復(fù)雜度選擇方案2025-07-07

