Резервное копирование и восстановление докера по имени том - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть вопрос, касающийся объемов и владельца.

В качестве примера я использую этот образ: privatebin , но это одинаково для любого случая.

Сначала я создаю том:

$ docker volume create privatebin-data

Из проверки докера я вижу, где находятся данные:

$ 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 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?Это правильный способ резервного копирования и восстановления томов докера?

1 Ответ

0 голосов
/ 05 декабря 2018

UID / GID исходят из вашего изображения, privatebin / nginx-fpm-alpine.Так что, пока вы создаете пользователей в том же порядке / порядке, и в базовом образе ничего не меняется, эти идентификаторы будут одинаковыми независимо от того, где вы запускаете образ.

Мой предпочтительный способ резервного копированияа восстановление томов - это использование служебного контейнера, на случай, если изменится серверная часть докера или вы решите переместить указанный том в другое место или во внешнее хранилище данных.Команды для этого выглядят так:

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
...