docker資料遷移

2021-10-11 02:52:42 字數 1640 閱讀 1310

開發伺服器隨著docker執行服務的變多,docker目錄占用磁碟空間也在逐漸變大,終於在最近磁碟徹底佔滿導致容器啟動不起來並提示"no device space left"。為了防止以後出現docker占用磁碟容量不夠的情況決定對docker資料目錄遷移。

目前我的linux系統為centos linux release 7.8.2003 (core),docker版本為docker version 19.03.13, build 4484c46d9d,docker資料預設儲存在/var/lib/docker目錄下。實際儲存目錄可以參考docker info命令輸出(其中的docker root dir就是需要遷移目錄):

client:

...server:

...docker root dir: var/docker/lib

...

systemctl stop docker或者service docker stop

因為作者目前大容量硬碟掛載在了/home目錄下,所以新目錄建立在/home目錄下

mkdir -p /home/docker/lib

cp命令這兩個引數比較關鍵(r:遞迴複製;p:保留原有許可權),如果不加p引數可能會導致遷移後的目錄的/tmp目錄og(其他人&&組)丟失w(寫)許可權。教訓:mongo容器啟動需要在/tmp目錄下建立****.sock監聽請求,由於cp沒有加上p引數導致/tmp目錄從drwxrwxrwt許可權變為drwxr-xr-t許可權,無法成功啟動。t許可權是x+sbit形成的。

/usr/bin/cp -rp /var/lib/docker/* /home/docker/lib

編輯配置檔案新增一行"graph": "/home/docker/lib"

vim /etc/docker/daemon.json

或者軟鏈結新目錄到原來的目錄(需要刪除原目錄或者ln命令加上f引數強行移除)

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

systemctl start docker或者service docker start

使用docker info命令檢視docker root dir引數是否變為了新的目錄

檢視容器是否全部啟動,如果沒有啟動可以通過ps -a命令檢視exit容器並執行docker start或者docker start `docker ps -a --filter 'status=exited' --format '}'`重啟所有退出的容器(該操作會重啟已退出但未清除的臨時容器,請根據實際情況過濾操作)

確認資料等沒有任何問題後刪除原始目錄

注意:如果前面使用ln -s掛載新硬碟到原始目錄下則跳過下面步驟

rm -rf /var/lib/docker

docker 修改映象和容器的存放路徑

docker掛載目錄出錯的問題解決

docker遷移記錄

docker pull impermission any froend latest執行映象 docker run d p it docker run privileged true p 33030 22 p 9999 9999 p 8889 8889 tid name myanyb impermi...

Docker遷移資料卷,遷移容器詳解 測試通過

最近工作上有需求要遷移現在docker上的容器和資料到新的伺服器上,但網上搜了很多部落格,真正實用且有效的寥寥無幾,最後自己爬了不少坑乾掉了這個需求,寫部落格記錄一下操作過程,希望後來的小夥伴能夠少走些彎路 接下來的操作根據mongodb資料庫的遷移舉例 docker inspect mongo m...

docker 安裝目錄遷移

ubuntu 安裝docker 後的目錄遷移 眾所周知docker使用apt安裝以後,在 var lib下,占用 下硬碟空間 遷移方法 1 檢視當前系統下docker 所有正在執行的映象 並停止 未開始執行的請忽略 docker ps a docker stop 映象名稱 2 停止docker 服務...