Backup

備份大型 docker 卷與綁定掛載與 /var/lib/docker/volumes/ (owncloud)

  • June 21, 2019

我某種“繼承”了一個 dockerized 伺服器環境,現在我必須實現一個備份概念 - 特別是對於 Owncloud 容器,它將使用者文件儲存在一個 docker 卷中。醫生文件

$$ 1 $$說“與綁定安裝相比,卷有幾個優點”,因此“是首選機制”。列出的優點之一是“卷更容易備份”,文件建議使用如下命令來創建卷的 tar 備份:

$ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

但是,特別是對於備份(我使用 borg 備份將主機文件同步到異地儲存庫),我發現這種方式有幾個缺點:

  • 對於每個備份,您必須在本地複制整個數據,這需要兩倍的磁碟空間和複製時間。
  • 每個備份都會創建一個新的 BLOB - 必須再次複製未更改的文件。
  • 要恢復單個 Owncloud 文件,您必須從備份中恢復整個 tar(在同步到備份之前解壓會使所需的磁碟空間增加三倍)。…

我對 docker 比較陌生,所以我可能還沒有全面了解 docker 生態系統。但據我目前所知,對於這種情況,我認為綁定掛載將是最好的解決方案。無論如何,我也沒有從體積的其他優勢中受益。還是我錯過了什麼?使用綁定安裝有什麼缺點嗎?

直接備份 /var/lib/docker/volumes/ 怎麼樣?

通過我的搜尋,我想出了來自 owncloud 的這篇博文

$$ 2 $$這建議直接備份 /var/lib/docker/volumes/owncloud_files/_data 。對我來說,這似乎不是最乾淨的方式。 但是,處理目前的情況,我想暫時走這條路。安全嗎?(當然,關於一致性所需的預防措施,例如關閉數據庫容器、owncloud 維護模式等 - 我認為這裡提到的解決方案無論如何都需要這些!?)

$$ 1 $$ https://docs.docker.com/storage/volumes/ $$ 2 $$ https://owncloud.org/news/docker-series-pt-3-automatically-easily-backup-restore-dockerized-owncloud/

無論如何,我也沒有從體積的其他優勢中受益。還是我錯過了什麼?使用綁定安裝有什麼缺點嗎?

我似乎明白 Docker 想讓你忘記主機的存在;事實上,有時您無法訪問它,因此卷是保存數據的最明顯方式。

綁定掛載是主機上的路徑,因此您必須以某種方式在Docker*之外“管理”它(分配空間、掛載分區……)。*也許您已經為此準備了一個系統,例如安裝 Docker、docker-compose 並將其上傳docker-compose.yml到伺服器的 Ansible 劇本。但是,如果您不這樣做,或者您只是將您docker-compose指向一個遠端 Docker 守護程序,那麼您將只想使用它,而不是其他任何東西:那麼您將需要卷中的數據。

直接備份 /var/lib/docker/volumes/ 怎麼樣?

我同意這不是一個好主意:那是 Docker 自己的空間,我不會碰它,就像我不會從/var/lib/postgresql正在執行的實例上複製一樣。

還是我錯過了什麼?

為什麼不執行borg而不是tar在臨時容器中執行?

引用自:https://serverfault.com/questions/971884