docker容器備份、恢復和遷移volume方案

    volume作爲數據的載體,在很多情況下需要對其中的數據進行備份、遷移或是恢復。下面一docker容器的volume爲例,說一下備份的技巧。

  我們先建立一個容器vol_simple,該容器在/date掛載了一個volume。

    $ sudo docker run -it --name vol_simple -v /data ubuntu /bin/bash

    如果我們需要將這裏的數據備份,一個很容易想到的辦法是使用docker inspect命令查找/date在宿主機上對應的文件夾位置,然後複製其中內容或是使用tar進行打包,同樣如果需要恢復某個volume中的數據,可以查找到volume對應的文件夾,將數據複製進這個文件夾或者使用tar恢復。但這些笨拙的做法並不值得推薦,因爲查找主機上文件夾後在再操作容易出錯,也不適合腳本的自動化。

  備份volume可以使用一下方法。

    $ sudo docker run  --rm --vloumes-from vol_simple -v$(pwd):/backup ubuntu tar cvf /backup/data.tar /data 

    這個指令啓動了一個臨時的容器,這個容器掛載了兩個volume,第一個volume與要備份的volume共享,第二個volume將宿主機的當前目錄掛載到容器的/backup下。容器運行後將要備份的內容(/data文件夾)備份到/backup/data.tar,然後刪除容器,備份後的data.tar就留在了當前目錄。

  恢復volume方法:

    $ sudo docker run -it --name vol_bck -v /data ubuntu /bin/bash

    $ sudo docker run --rm --volumes-from vol_bck -v $(pwd):/backup ubuntu tar xvf /backup/data.tar -C /

   首先運行了一個新容器作爲數據恢復的目標。第二行指令啓動了一個臨時容器,這個容器掛載了兩個volume,第一個volume與要恢復的volume共享,第二個將宿主機的當前目錄掛載到容器的/backup下。由於之前備份的data.tar在當前目錄下,那麼它在容器中的/backup也能訪問到,容器啓動後將這個存檔文件中的/data恢復到跟目錄下,然後刪除容器,恢復後的數據在vol_bck的volume中了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章