1. 程式人生 > 實用技巧 >docker資料目錄遷移

docker資料目錄遷移

場景介紹

 最近公司的專案出現無響應的問題,排查後發現是磁碟已滿導致的,df -h 顯示已佔用達到了100%。幸好伺服器還有一塊資料盤,之前已作為mysql的資料目錄,現在打算再把docker也遷移至資料盤。
 在這裡和大家分享下經歷,難免會有些許錯誤,請各位看官不吝賜教。

方案介紹

 考慮了下,決定採用軟連線的方式解決,好處是能保證docker原有配置的情況下將資料目錄遷移至資料盤,不修改配置檔案也意味著降低誤操作的概率。更好的是相比於直接掛載磁碟方案,一個數據盤可以為多個應用服務,管理十分方便,而且實際操作只需幾條命令即可。
 理論上任何軟體的資料遷移都可以用軟連線的方式解決。在這之前的mysql也是使用軟連線解決的。

方案實施

 預設情況下Docker的存放位置為:/var/lib/docker
可以通過下面命令檢視具體位置:

docker info | grep "Docker Root Dir"
  1. 首先停掉Docker服務:
systemctl stop docker 
  1. 然後根據上面查到的路徑,移動整個/var/lib/docker目錄到資料盤的目的路徑:
mv /var/lib/docker /home/docker

 必須使用mv命令,cp會丟失許可權資訊,可能會導致意想不到的bug。
3. 加入軟連線

ln -s /home/docker /var/lib/docker

 先看下/home/docker下的目錄,確定掛載成功在啟動docker,即使掛載有問題,無礙,也可停止停止docker後重新操作
4. 啟動docker

systemctl start docker 

 這時候啟動Docker時發現儲存目錄依舊是/var/lib/docker,但是實際上是儲存在資料盤的。