一文帶你搞定docker system的所有命令
從磁盤爆滿到優(yōu)雅清理,Docker系統(tǒng)管理完全指南

“我的虛擬機又提示磁盤空間不足了!”
相信每個Docker用戶都經(jīng)歷過這樣的時刻。打開虛擬機一看,鏡像、容器、卷、構(gòu)建緩存,加起來輕松占據(jù)幾十GB。Docker是怎么悄悄吃掉你的硬盤的?又如何優(yōu)雅地清理它們?
答案就在 docker system 這組命令里。
docker system 是 Docker 提供的一組管理命令,用于查看和管理 Docker 守護進程的整體狀態(tài)、磁盤使用情況、系統(tǒng)信息等。它不直接操作容器或鏡像,而是從全局視角管理 Docker 引擎本身。
所有子命令概覽
| 命令 | 作用 | 常用程度 |
|---|---|---|
docker system df | 顯示 Docker 磁盤使用情況 | ????? |
docker system prune | 刪除未使用的 Docker 對象 | ????? |
docker system info | 顯示系統(tǒng)范圍的信息 | ???? |
docker system events | 獲取 Docker 守護進程的實時事件 | ??? |
docker system dial-stdio | 管理 Docker 守護進程的連接(高級) | ? |
各命令詳細說明
1.docker system df- 查看磁盤使用情況
最常用的命令,用于查看 Docker 占用了多少磁盤空間。
基本用法:
docker system df
輸出示例:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 21 21 8.797GB 460.6MB (5%)
Containers 24 24 565MB 0B (0%)
Local Volumes 8 8 123MB 0B (0%)
Build Cache 20 0 922.7MB 922.7MB
各列含義:
TYPE: 對象類型(鏡像、容器、卷、構(gòu)建緩存)TOTAL: 總數(shù)量ACTIVE: 正在使用的數(shù)量SIZE: 占用空間大小RECLAIMABLE: 可以回收(刪除)的空間大小及百分比
詳細模式(顯示每個對象):
docker system df -v
這會列出每個鏡像、容器、卷的具體信息,適合深入分析空間占用。

實用示例:
# 查看所有對象的詳細信息,排序查看最大的鏡像 docker system df -v | grep -A 10 "Images" # 只查看鏡像占用 docker system df | grep Images # 查看格式化的輸出(JSON格式) docker system df --format "json"
2.docker system prune- 清理未使用對象
清理命令,刪除不再使用的 Docker 對象以釋放空間。
完整參數(shù)表:
| 參數(shù) | 說明 | 刪除內(nèi)容 |
| 無參數(shù) | 基礎(chǔ)清理 | 停止的容器、未使用的網(wǎng)絡(luò)、懸空鏡像、懸空構(gòu)建緩存 |
-a, --all | 清理所有未使用的鏡像 | 基礎(chǔ)清理 + 所有未被容器引用的鏡像 |
--volumes | 清理卷 | 基礎(chǔ)清理 + 所有未被容器引用的卷 |
-f, --force | 強制執(zhí)行 | 不提示確認,直接刪除 |
--filter | 條件過濾 | 根據(jù)特定條件篩選要刪除的對象 |
組合使用示例:
# 1. 標(biāo)準清理(最安全) docker system prune # 2. 清理所有未使用鏡像(不清理卷) docker system prune -a # 3. 清理所有未使用鏡像和卷(危險) docker system prune -a --volumes # 4. 自動確認,不詢問 docker system prune -f # 5. 清理24小時前的資源 docker system prune --filter "until=24h" # 6. 清理帶有特定標(biāo)簽的資源 docker system prune --filter "label=deprecated=true"
過濾條件高級用法:
# 清理超過指定時間的對象 docker system prune --filter "until=2026-01-01T00:00:00Z" # 組合多個條件(邏輯與) docker system prune -a --filter "until=24h" --filter "label!=keep" # 排除某個標(biāo)簽的資源 docker system prune --filter "label!=important"
安全建議:
- 生產(chǎn)環(huán)境:只用
docker system prune(不加-a和--volumes) - 開發(fā)環(huán)境:可以用
docker system prune -a,節(jié)省空間 - 避免使用
--volumes除非確定數(shù)據(jù)不重要
3.docker system info- 系統(tǒng)信息
顯示 Docker 引擎和主機的詳細信息。
基本用法:
docker system info # 或使用舊命令別名 docker info
輸出內(nèi)容包括:
- 服務(wù)器版本:Docker Engine 版本號
- 操作系統(tǒng):運行 Docker 的主機系統(tǒng)
- 內(nèi)核版本:Linux 內(nèi)核版本
- CPU/內(nèi)存:主機硬件資源
- 存儲驅(qū)動:overlay2, aufs 等
- 日志驅(qū)動:json-file, journald 等
- 安全選項:seccomp, AppArmor, SELinux
- 鏡像加速器:Registry Mirrors 配置
- 容器運行時:runc, containerd 版本
實用示例:
# 查看 Docker 根目錄位置
docker info | grep "Docker Root Dir"
# 查看存儲驅(qū)動和空間
docker info | grep -A 5 "Storage Driver"
# 查看當(dāng)前運行的容器數(shù)量
docker info | grep "Containers:"
# 輸出為JSON格式(便于腳本處理)
docker info --format "{{json .}}"
docker info -f "{{.ServerVersion}}"
4.docker system events- 事件監(jiān)控
實時監(jiān)控 Docker 守護進程產(chǎn)生的事件。
基本用法:
docker system events
事件類型:
- 容器事件:create, start, stop, kill, die, pause, unpause, delete
- 鏡像事件:pull, push, tag, untag, delete, save, load
- 卷事件:create, mount, unmount, destroy
- 網(wǎng)絡(luò)事件:create, connect, disconnect, destroy
- 守護進程事件:reload
實用示例:
# 只監(jiān)控容器相關(guān)事件
docker system events --filter type=container
# 只監(jiān)控鏡像拉取事件
docker system events --filter event=pull
# 監(jiān)控特定容器的所有事件
docker system events --filter container=my-container
# 監(jiān)控帶特定標(biāo)簽的事件
docker system events --filter label=com.example.env=production
# 只顯示最近10條事件
docker system events --since 10m
# 按時間范圍過濾
docker system events --since "2026-01-01T00:00:00Z" --until "2026-01-02T00:00:00Z"
# 格式化輸出(只顯示時間和事件)
docker system events --format "{{.Time}} {{.Type}} {{.Action}}"
5.docker system dial-stdio- 高級連接管理
這是一個相對底層的命令,用于與 Docker 守護進程建立雙向流式連接。主要用于調(diào)試和開發(fā)場景。
使用場景:
- Docker CLI 插件的開發(fā)
- 遠程調(diào)試 Docker 守護進程
- 高級網(wǎng)絡(luò)診斷
示例:
# 通常不直接使用,而是在插件中通過 API 調(diào)用 docker system dial-stdio
實戰(zhàn)組合技巧
技巧1:清理前的預(yù)覽
# 先查看占用情況 docker system df # 預(yù)覽會被刪除的內(nèi)容(不實際刪除) docker system prune -a --volumes --dry-run # 注意:--dry-run 不是所有版本都支持 # 替代方案:手動檢查 docker container ls -a | grep Exited # 查看停止的容器 docker image ls -a # 查看所有鏡像 docker volume ls -f dangling=true # 查看未使用的卷
技巧2:定期自動清理(Cron任務(wù))
# 編輯 crontab crontab -e # 每天凌晨2點清理(安全模式) 0 2 * * * /usr/bin/docker system prune -f # 每周日凌晨3點深度清理(保留最近7天) 0 3 * * 0 /usr/bin/docker system prune -a --filter "until=168h" -f
技巧3:監(jiān)控磁盤變化
# 實時監(jiān)控 Docker 磁盤占用 watch -n 5 'docker system df' # 記錄空間變化到日志 echo "$(date): $(docker system df | grep Images)" >> disk-usage.log
技巧4:一鍵清理腳本
#!/bin/bash # docker-cleanup.sh - 安全的清理腳本 echo "當(dāng)前磁盤占用:" docker system df echo "" echo "清理停止的容器、懸空鏡像和未使用的網(wǎng)絡(luò)..." docker system prune -f echo "" echo "清理舊的構(gòu)建緩存(7天以上)..." docker builder prune -f --filter "until=168h" echo "" echo "清理未使用的卷(需要確認)..." docker volume prune echo "" echo "清理完成!" docker system df
最佳實踐總結(jié)
| 環(huán)境 | 推薦命令 | 頻率 |
|---|---|---|
| 生產(chǎn)環(huán)境 | docker system prune | 每周1次 |
| 開發(fā)環(huán)境 | docker system prune -a | 每天1次 |
| CI/CD 環(huán)境 | docker system prune -a --volumes -f | 每次構(gòu)建前 |
| 個人學(xué)習(xí) | docker system prune -a --volumes | 磁盤滿時 |
| Docker Desktop (Mac/Windows) | docker system prune -a | 月度維護 |
注意:
--volumes= 數(shù)據(jù)可能永久丟失-a= 鏡像需要重新下載- 無參數(shù) = 最安全,日常使用
到此這篇關(guān)于一文帶你搞定docker system的所有命令的文章就介紹到這了,更多相關(guān)docker system命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docket Desktop安裝redis并設(shè)置密碼方式
在DockerDesktop中安裝Redis并設(shè)置密碼的步驟包括啟動Docker、拉取Redis鏡像、創(chuàng)建并運行Redis容器設(shè)置密碼、驗證容器運行、連接并驗證密碼,以及可選的持久化數(shù)據(jù)設(shè)置2025-03-03
Prometheus 整合 AlertManager的教程詳解
Alertmanager 主要用于接收 Prometheus 發(fā)送的告警信息,它很容易做到告警信息的去重,降噪,分組,策略路由,是一款前衛(wèi)的告警通知系統(tǒng)。這篇文章主要介紹了Prometheus 整合 AlertManager的教程 ,需要的朋友可以參考下2019-07-07
詳解利用Dockerfile構(gòu)建mysql鏡像并實現(xiàn)數(shù)據(jù)的初始化及權(quán)限設(shè)置
本篇文章主要介紹了詳解利用Dockerfile構(gòu)建mysql鏡像并實現(xiàn)數(shù)據(jù)的初始化及權(quán)限設(shè)置 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
詳解掛載運行的docker容器中如何掛載文件系統(tǒng)
這篇文章主要給大家介紹了如何在掛載運行中的docker容器中掛載文件系統(tǒng),文中通過一步步的實踐過程介紹的很詳細,相信對有需要的朋友們來說具有一定的參考借鑒價值,感興趣的朋友們下面來一起看看吧。2016-12-12
騰訊云服務(wù)器docker開啟端口后無法訪問的解決方法
本文主要介紹了騰訊云服務(wù)器docker開啟端口后無法訪問的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
docker部署Vaultwarden密碼共享管理系統(tǒng)的實現(xiàn)(圖文)
Vaultwarden是一個開源的密碼管理器,它提供了類似于Bitwarden的功能,允許用戶安全地存儲和管理密碼、敏感數(shù)據(jù)和身份信息,本文主要介紹了docker部署Vaultwarden密碼共享管理系統(tǒng)的實現(xiàn),感興趣的可以了解一下2023-10-10
Docker為網(wǎng)絡(luò)bridge模式指定容器ip的方法
Docker在創(chuàng)建容器時有四種網(wǎng)絡(luò)模式,bridge為默認不需要用--net去指定,其他三種模式需要在創(chuàng)建容器時使用--net去指定。那Docker為網(wǎng)絡(luò)bridge模式指定容器ip該如何實現(xiàn)呢?下面通過通過這篇文章一起看看吧,文中給出了詳細的示例代碼,有需要的可以參考借鑒。2016-11-11
docker安裝tomcat dubbo-admin實例技巧
在本篇文章里小編給大家整理的是關(guān)于docker安裝tomcat dubbo-admin實例技巧,有需要的朋友們可以參考下。2020-01-01

