1. 選擇高效的存儲驅動(Overlay2為CentOS首選)
Overlay2是Docker推薦的存儲驅動,具備優秀的讀寫性能和元數據管理能力,尤其適合CentOS等現代Linux發行版。其工作機制通過“lower”和“upper”目錄實現鏡像層共享,減少磁盤空間占用。配置步驟:停止Docker服務(systemctl stop docker
),編輯/etc/docker/daemon.json
文件添加{"storage-driver": "overlay2"}
,啟動服務(systemctl start docker
)并通過docker info
驗證驅動是否生效。
2. 遷移Docker默認存儲路徑至大容量分區
默認存儲路徑/var/lib/docker
常位于根分區,易因鏡像、容器等數據增長導致空間不足。解決方法:停止Docker,將/var/lib/docker
內容備份至大容量分區(如/home/data/docker
),創建軟鏈接(ln -sf /home/data/docker /var/lib/docker
)或修改/etc/docker/daemon.json
中的"data-root"
參數指向新路徑,重啟服務即可。
3. 定期清理未使用的Docker資源
未使用的容器、鏡像、卷和網絡是磁盤空間浪費的主要來源,可通過以下命令一鍵清理:
docker container prune
(刪除所有已停止的容器);docker image prune
(刪除無容器引用的鏡像,如構建中間層);docker volume prune
(刪除未掛載到容器的卷,避免數據殘留);docker system prune -a --volumes
(同時清理上述所有資源,-a
包含未使用的鏡像,--volumes
包含未使用的卷)。-a
和--volumes
會永久刪除數據,執行前需確認備份重要信息。4. 優化鏡像構建流程,減少鏡像體積
FROM ... AS builder
分離編譯環境與運行環境,僅將最終運行時文件(如二進制文件)復制到最終鏡像,避免包含編譯工具鏈、依賴包等無用文件。例如:FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o main .
FROM golang:1.21-alpine
WORKDIR /app
COPY --from=builder /app/main .
CMD ["./main"]
RUN
命令合并為一個(如RUN apt-get update && apt-get install -y package1 package2 && rm -rf /var/lib/apt/lists/*
),減少鏡像層數和緩存占用。5. 管理Docker日志文件,防止過度增長
Docker容器日志默認存儲在/var/lib/docker/containers/<container-id>/<container-id>-json.log
,長期運行會產生大量日志文件。解決方法:
--log-opt max-size=10m --log-opt max-file=3
參數限制單個日志文件大?。ㄈ?0MB)和數量(最多3個);find
命令刪除超過7天的日志文件(find /var/lib/docker/containers/ -type f -name "*.log" -mtime +7 -exec rm -f {} \;
);syslog
或journald
(需配置對應的日志服務器)。6. 監控Docker存儲使用情況,及時預警
通過以下命令實時查看Docker存儲占用情況,快速定位空間瓶頸:
docker system df
(顯示鏡像、容器、卷、緩存的總體占用);docker system df -v
(列出每個鏡像、容器的具體大?。?;docker builder prune -a --dry-run
(模擬清理,顯示可釋放的緩存大?。?。