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中了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM