天天看點

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

    • 1. 查找docker工作根目錄
    • 2. 檢視工作目錄占用空間大小
    • 3. 清理docker占用空間
      • 3.1 檢視docker占用的磁盤空間
      • 3.2 清理docker占用空間
    • 4. 遷移docker根目錄
      • 4.1 停止docker服務
      • 4.2 檢視磁盤占用情況
      • 4.3 拷貝舊目錄檔案到新目錄下
    • 5. 修改配置的docker根目錄
    • 6. 重新開機docker服務
    • 7. 檢視docker資訊
    • 8. 驗證docker其他資訊
    • 9. 其他docker相關知識

1. 查找docker工作根目錄

輸入指令

docker info | grep 'Docker Root Dir'

查找docker的根目錄。

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

2. 檢視工作目錄占用空間大小

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

我這裡隻是做個示範,2.4G簡直不要太小了。

3. 清理docker占用空間

該步驟為可選步驟,如果擔心鏡像被誤删除,可以直接跳過該步驟。

3.1 檢視docker占用的磁盤空間

指令

docker system df

可以檢視docker占用的磁盤空間

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

3.2 清理docker占用空間

指令

docker system prune

可以用于清理docker占用的空間,删除關閉的容器、無用的資料卷和網絡,以及dangling鏡像(即無tag的鏡像)

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

指令

docker system prune -a

可以清理所有沒有被使用的docker鏡像,即使容器隻是暫時停止的狀态。使用該指令之前請再三确認,避免删除重要的鏡像等檔案。

4. 遷移docker根目錄

4.1 停止docker服務

4.2 檢視磁盤占用情況

檢視本機磁盤的占用情況,找到合适的、空間足夠大的磁盤來作為docker的根目錄。

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

可以看到,我這個機器的

/data

目錄空間最大,因為我們現在的docker根目錄已經是在

/data

目錄下面了(因為我之前已經遷移了一次了,這裡隻是再做一次示範記錄),是以這次的示範會從目錄

/data/k8s/docker/data

遷移到

/data/docker/data

4.3 拷貝舊目錄檔案到新目錄下

建目錄

開始拷貝,拷貝時間根據具體情況而定,應該要蠻久的。

/data/k8s/docker/data

–>

/data/docker/data

檢視拷貝情況

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

5. 修改配置的docker根目錄

docker的工作目錄

/data/k8s/docker/data

是通過配置檔案指定的,我們需要找到該檔案,并且将工作目錄更改為

/data/docker/data

這個配置檔案可能每種安裝方式的位置有點不同。我現在知道的有兩個地方。

  1. /etc/docker/daemon.json

    檔案内。
    docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄
  2. service檔案内,我有一台機器放在

    /usr/lib/systemd/system/docker.service.d/docker-options.conf

    這個地方,隻是做個參考,但是一般也是寫在docker的service檔案裡面的,可以通過檢視服務資訊找到,指令示例:

    systemctl status docker

    docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

找到你的配置檔案所在位置,并修改圖中劃紅線的地方,将舊的目錄替換成新的目錄。

/data/k8s/docker/data

–>

/data/docker/data

6. 重新開機docker服務

[[email protected] /]# systemctl daemon-reload
[[email protected] /]# systemctl restart docker
           

7. 檢視docker資訊

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

可以看到現在的docker根目錄已經成功由

/data/k8s/docker/data

遷移到

/data/docker/data

了。

8. 驗證docker其他資訊

如果不放心,可以重新看一下docker的鏡像或者容器資訊。

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄
docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

如果還是不放心的話,可以使用docker去pull一些大點兒的鏡像,然後檢視

/data/docker/data

檔案夾的大小是不是發生了變化,記得pull之前先檢視一下。檢視檔案夾大小的指令在後面一節。

如果确認完畢之後沒有什麼問題了,就可以把之前的舊目錄給釋放出來了。簡單粗暴,直接删除

/data/k8s/docker/data

9. 其他docker相關知識

順便再附上一些解決該問題的過程中使用到的知識。

1.根據docker overlay中的檔案夾名稱,查找容器 。

docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

有寫檔案夾找不到,就說明這個容器可能已經被删除了或者失效了。

2.檢視檔案夾占用磁盤空間大小

du -sh 檔案夾名稱
           
docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄

檢視目前目錄下所有子目錄的大小,并從小到大排序:

du -sh ./*|sort -h
           
docker目錄占用磁盤空間太大,将docker的根目錄遷移到其他目錄