複製備份docker容器數據的方法

這裏以jenkins容器爲例,介紹三種方法。linux

方法一

  • 將容器打包成鏡像,這時數據就在鏡像中了,im:1.0爲容器名,能夠隨便取
docker commit <container id> im:1.0
  • 從新運行鏡像,-v將容器內tmp目錄映射到宿主機上的tmp目錄
docker run -itd -v /tmp:/tmp im:1.0  // 第一個tmp是宿主機目錄,第二個是容器內目錄
  • 把 /var/jenkins_home的文件複製到tmp下,注意這裏的container name是隨機生成的,能夠經過docker ps | grep im:1.0查看, -it爲交互式終端
docker exec -it <container name> cp -r /var/jenkins_home /tmp  // cp 複製粘貼
  • 進入tmp目錄,查看是否多了個jenkins_home目錄
cd /tmp
ls
  • 進入jenkins_home目錄,移動內容到home、srv等目錄,由於tmp目錄是暫時保存的,下次linux重啓就會被刪除了,這樣數據就能夠持久化了。
cd jenkins_home/
mv <home/srv>
  • 注意數據備份完以後,要刪除剛纔生成的多餘容器哦
docker stop <container name> && docker rm <container name>

方法二

官方文檔介紹docker

  • 執行以下命令,<container name>爲正在運行的容器名,-v映射,/tmp/backup目錄是隨便指定的, cvf壓縮,/var/jenkins_home爲要備份的目錄
docker run --rm --volumes-from <container name> -v /tmp/backup:/backup ubuntu tar cvf /backup/backup.tar /var/jenkins_home
  • 而後進入backup目錄, 會看到上面壓縮的文件
cd tmp/backup/
ls
  • 解壓
tar xvf backup.tar
  • 解壓完會多一個var文件,進入就能夠看到jenkins_home目錄,裏面內容跟方法一備份的數據同樣, 使用mv命令移動到其餘目錄下
cd var/jenkins_home
mv

相較於第一種方法,使用--rm,咱們不須要擔憂資源的回收。ubuntu

方法三

在嘗試第三種方法以前,咱們先進到tmp目錄下,把jenkins_home和backup目錄刪掉code

rm -rf jenkins_home/ backup/
  • 查看容器id
docker ps | grep jenkins_im
  • 把容器的jenkins_home目錄複製到當前的tmp目錄下
docker cp <container id>:var/jenkins_home /tmp/
  • 進入tmp查看是否有jenkins_home
cd tmp/
ls
  • 進入jenkins_home, 會看到跟以前備份同樣的數據,最後仍是同樣的操做,把內容移動到其餘目錄下
mv
相關文章
相關標籤/搜索