Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 修改 Docker 預設資料目錄(/var/lib/docker)解決根分區空間不足

編輯:關於 Linux

Docker 預設將映像、容器、卷資料存放於 /var/lib/docker。若安裝系統時未單獨劃分 /var 分區,根分區極易被 Docker 佔滿導致服務異常。本文提供兩種修改 Docker 資料根目錄的方法:--graph 參數法(臨時/測試)與 daemon.json 配置法(生產環境推薦)。

Docker 資料目錄遷移示意

方法一:啟動參數 --graph(適用測試/臨時)

# 停止 Docker
systemctl stop docker

# 指定新資料目錄啟動(會自動建立目錄、權限 0700)
docker --graph=/opt/docker -d

# 原映像/容器將不可見(路徑已變更),如需遷移請見方法二

方法二:修改 daemon.json(生產環境標準做法)

  1. 停止 Docker:
    systemctl stop docker
  2. 編輯配置檔(路徑因發行版而異):
    • Ubuntu/Debian:/etc/docker/daemon.json
    • CentOS/RHEL/Fedora:/etc/docker/daemon.json(或 /etc/sysconfig/docker 舊版)
  3. 寫入配置(若檔案不存在則新建):
    {
      "data-root": "/home/lib/docker",
      "storage-driver": "overlay2",
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m",
        "max-file": "3"
      }
    }
    關鍵鍵:"data-root": "/home/lib/docker"(Docker 17.06+ 使用 data-root,舊版用 graph)
  4. (可選)遷移現有資料:
    rsync -aP /var/lib/docker/ /home/lib/docker/
  5. 重新載入並啟動:
    systemctl daemon-reload
    systemctl start docker
  6. 驗證:
    docker info | grep "Docker Root Dir"
    應輸出 Docker Root Dir: /home/lib/docker

舊版 CentOS 7 /etc/sysconfig/docker 寫法(參考)

OPTIONS="--graph=\"/home/lib/docker\" --selinux-enabled -H fd://"

修改後 systemctl restart docker 生效。但新版 Docker (19.03+) 已棄用此檔,統一改用 daemon.json。

遷移後清理

# 確認新目錄正常運行後,可刪除舊目錄釋放空間
rm -rf /var/lib/docker

注意事項

  • 新目錄所在分區需採用支援 d_type 的檔案系統(ext4、xfs、btrfs),避免 overlay2 驅動報錯。
  • SELinux 環境下,新目錄需正確標籤:
    semanage fcontext -a -t container_var_lib_t "/home/lib/docker(/.*)?"
    restorecon -Rv /home/lib/docker
  • 若使用 devicemapper 驅動(舊版預設),遷移較複雜,建議先升級至 overlay2 再遷移。

透過 daemon.json 修改 data-root,配合 rsync 遷移現有資料,即可在不重裝系統的前提下,將 Docker 資料移至大容量分區,徹底解決根分區空間焦慮。

Copyright © Windows教程網 All Rights Reserved