開發伺服器隨著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 服務...