簡體   English   中英

備份和恢復名為volume的docker

[英]Backup and restore docker named volume

我對數量和所有權有疑問。

作為一個例子,我正在使用這個圖像: privatebin ,但這對任何情況都是一樣的。

首先我要創建音量:

$ docker volume create privatebin-data

從docker inspect,我可以看到數據的位置:

$ docker inspect privatebin-data 
[
    {
        "CreatedAt": "2018-12-04T21:42:46+01:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/privatebin-data/_data",
        "Name": "privatebin-data",
        "Options": {},
        "Scope": "local"
    }
]

按照docker hub的說明,我正在開始圖片:

$ docker run -d --restart="always" --read-only -p 8080:80 -v privatebin-data:/srv/data privatebin/nginx-fpm-alpine:1.1.1

然后我訪問http:// localhost:8080 ,一切都按預期工作。

現在的內容量:

$ ls -l /var/lib/docker/volumes/privatebin-data/_data
total 16
drwx------ 3 82 82 4096 Dec  4 21:49 73
-rw-r----- 1 82 82   46 Dec  4 21:49 purge_limiter.php
-rw-r----- 1 82 82  529 Dec  4 21:49 salt.php
-rw-r----- 1 82 82  131 Dec  4 21:49 traffic_limiter.php

我想通過歸檔來備份目錄:

tar -C /var/lib/docker/volumes/privatebin-data -czf privatebin-data-backup.tar.gz _data

我的問題是:我可以安全地假設,如果我重新啟動圖像,例如在其他服務器上,用戶和組所有者仍然是82? 這是備份和恢復泊塢窗卷的正確方法嗎?

UID / GID來自你的圖像,privatebin / nginx-fpm-alpine。 因此,只要您在那里以相同的方式/順序創建用戶,並且基本圖像中沒有任何變化,那么無論您在何處運行圖像,這些ID都將是相同的。

備份和還原卷的首選方法是使用實​​用程序容器,以防止docker的后端發生更改,或者您決定將命名卷移動到其他位置或外部數據存儲。 執行此操作的命令如下所示:

docker run --rm \
  -v privatebin-data:/source:ro \
  busybox tar -czC /source . >privatebin-data-backup.tar.gz

docker run --rm -i \
  -v privatebin-data:/target \
  busybox tar -xzC /target <privatebin-data-backup.tar.gz

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM