Docker容器排錯(cuò)必知的8個(gè)命令詳解
作為一名IT運(yùn)維工程師,日常與Docker容器打交道是必修課。當(dāng)容器出現(xiàn)故障時(shí),快速定位問題是我們的核心能力。今天給大家分享8個(gè)最實(shí)用的Docker排錯(cuò)命令。
一、docker logs -f— 查看容器日志
docker logs命令介紹
用途:獲取容器的標(biāo)準(zhǔn)輸出(stdout)和標(biāo)準(zhǔn)錯(cuò)誤(stderr)日志,是定位應(yīng)用層面問題的核心命令。
常用選項(xiàng):
| 選項(xiàng) | 說明 |
|---|---|
-f, --follow | 實(shí)時(shí)跟蹤日志輸出 |
--tail N | 只顯示最后N行 |
--since | 顯示指定時(shí)間后的日志,如--since 10m |
-t, --timestamps | 顯示時(shí)間戳 |
具體示例:
排錯(cuò)第一步永遠(yuǎn)是看日志。docker logs 可以查看容器的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤:
# 查看最近100行日志 docker logs --tail 100 my-container # 實(shí)時(shí)追蹤日志變化 docker logs -f my-container # 查看指定時(shí)間段的日志 docker logs --since 2024-01-01T00:00:00 my-container
典型問題:當(dāng)容器啟動(dòng)立即退出時(shí),先用docker logs查看錯(cuò)誤輸出(如配置文件語法錯(cuò)誤、端口沖突、依賴服務(wù)不可達(dá)等)。
二、docker inspect— 檢查容器詳細(xì)信息
docker inspect命令介紹
用途:以JSON格式輸出容器或鏡像的詳細(xì)配置信息,包括網(wǎng)絡(luò)設(shè)置、掛載卷、環(huán)境變量、啟動(dòng)命令、狀態(tài)等。
常用選項(xiàng):
| 選項(xiàng) | 說明 |
|---|---|
-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)入容器,用于交互式排查。
常用選項(xiàng):
| 選項(xiàng) | 說明 |
|---|---|
-it | 分配交互式終端(常用組合) |
-d | 后臺(tái)執(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
典型排查動(dòng)作:
- 檢查進(jìn)程:
ps aux、top - 查看端口監(jiān)聽:
netstat -tlnp、ss -tlnp - 測(cè)試網(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)程級(jí)問題。
常用選項(xiàng):無特殊選項(xiàng),支持ps命令的參數(shù)(如aux)。
具體示例:
快速確認(rèn)容器內(nèi)服務(wù)是否正常啟動(dòng):
docker top my-container
典型問題:
- 容器內(nèi)某個(gè)子進(jìn)程僵死:通過
docker top找到PID,再用docker exec進(jìn)入后kill。 - 惡意進(jìn)程或意外啟動(dòng)的額外進(jìn)程:通過進(jìn)程列表發(fā)現(xiàn)異常。
五、docker stats— 實(shí)時(shí)監(jiān)控資源占用
docker stats命令介紹
用途:實(shí)時(shí)顯示容器的CPU、內(nèi)存、網(wǎng)絡(luò)IO和磁盤IO使用情況,用于性能瓶頸排查。
常用選項(xiàng):
| 選項(xiàng) | 說明 |
|---|---|
--no-stream | 只輸出一次當(dāng)前狀態(tài) |
--format | 自定義輸出格式 |
具體示例:
實(shí)時(shí)查看容器的CPU、內(nèi)存、網(wǎng)絡(luò)使用情況:
# 監(jiān)控所有容器 docker stats # 監(jiān)控指定容器 docker stats my-container
典型問題:
- 容器CPU持續(xù)100%:可能存在死循環(huán)或計(jì)算密集任務(wù)。
- 內(nèi)存不斷增長(zhǎng):可能存在內(nèi)存泄漏,需結(jié)合
docker exec進(jìn)入容器用top或free進(jìn)一步分析。 - 網(wǎng)絡(luò)IO異常高:檢查是否有異常流量或日志刷屏。
六、docker events— 查看Docker事件流
docker events命令介紹
用途:實(shí)時(shí)輸出Docker守護(hù)進(jìn)程產(chǎn)生的事件流,如容器創(chuàng)建、啟動(dòng)、停止、銷毀、健康檢查失敗等。
常用選項(xiàng):
| 選項(xiàng) | 說明 |
|---|---|
--filter | 按類型、標(biāo)簽、時(shí)間等過濾 |
--since / --until | 指定時(shí)間范圍 |
具體示例:
實(shí)時(shí)跟蹤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)變更
查看容器啟動(dòng)后文件系統(tǒng)的變化,排查配置丟失或異常修改:
docker diff my-container
總結(jié)
這8個(gè)命令涵蓋了Docker排錯(cuò)的完整鏈路:
| 命令 | 用途 | 優(yōu)先級(jí) |
|---|---|---|
docker logs | 看日志,定位錯(cuò)誤原因 | ??? |
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個(gè)命令定位到原因。建議收藏,遇到容器故障時(shí)拿出來照著排查。
到此這篇關(guān)于Docker容器排錯(cuò)必知的8個(gè)命令詳解的文章就介紹到這了,更多相關(guān)Docker容器排錯(cuò)命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Docker實(shí)現(xiàn)MySQL容器中批量導(dǎo)出所有數(shù)據(jù)庫(kù)
在使用 Docker 部署 MySQL 的場(chǎng)景中,經(jīng)常會(huì)需要一次性導(dǎo)出容器內(nèi)除系統(tǒng)庫(kù)以外的所有數(shù)據(jù)庫(kù),下面小編就和大家介紹一下具體實(shí)現(xiàn)方法,有需要的小伙伴可以了解下2025-12-12
DockerToolBox文件掛載的實(shí)現(xiàn)代碼
這篇文章主要介紹了DockerToolBox文件掛載的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
docker容器查看所有沒使用的鏡像并刪除的實(shí)現(xiàn)
本文主要介紹了docker容器查看所有沒使用的鏡像并刪除的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Docker容器搭建并運(yùn)行實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Docker容器搭建并運(yùn)行實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
2個(gè)節(jié)點(diǎn)的docker容器網(wǎng)絡(luò)實(shí)現(xiàn)通信過程
文章介紹了五種實(shí)現(xiàn)跨節(jié)點(diǎn)Docker容器通信的方法,涵蓋host網(wǎng)絡(luò)、Swarm集群、網(wǎng)絡(luò)插件和自建VPN,適用于不同場(chǎng)景如調(diào)試、生產(chǎn)環(huán)境及高可用需求,并推薦根據(jù)部署復(fù)雜度選擇方案2025-07-07
Docker同時(shí)安裝MySQL和MariaDB的方法步驟
這篇文章主要介紹了Docker同時(shí)安裝MySQL和MariaDB的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
從入門到實(shí)戰(zhàn)詳解Docker中的常用命令
本文是一份Docker入門命令手冊(cè),重點(diǎn)為大家介紹了鏡像和容器管理的常用操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-06-06

