Created
July 23, 2018 12:35
-
-
Save WeslyG/ab060b78f7d8f57fe45869ecec700394 to your computer and use it in GitHub Desktop.
Перенос docker volume между серверами
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Как мигрировать docker volume на примере elasticsearch | |
# Backup | |
Запускаем елку, и вкидываем в нее данные, хоть через апи, хоть elasticdump | |
После этого в вольюмах будет много данных (тестировалось на 2 елке) | |
Смотрим оф руководство https://docs.docker.com/storage/volumes/#backup-a-container | |
Сначала надо выяснить где лежат данные, заходим через docker exec -it id bash смотри папку. | |
Все данные лежат в /usr/share/elasticsearch/data | |
Идем по руководству. Запускаем ЕЩЕ один контейнер, который возьмет volume нашего контейнера. И мауним к нему текущую папку (не забывать что | |
маунт ест только абсолютные пути, и штука с $pwd в винде не прокатит) так же уточнить нужно пару важных моментов. | |
Во первых указывать нужно имя контейнера volume которого хотим взять или id его же. Так же в конце незабыть указать именно нашу папку. | |
Команда в общем виде будет выглядеть вот так. | |
docker run --rm --volumes-from elastic_container_name -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /myfolder/for/backup | |
Команда для нас будет выгдяеть так | |
docker run --rm --volumes-from load-site_elk2_1 -v C:\Users\WeslyG\git\sandbox:/backup ubuntu tar cvf /backup/backup.tar /usr/share/elasticsearch/data | |
В итоге в нашей локальной папке sandbox появиться файл backup.tar со всем что было в дате | |
# Restore | |
Начинаем восстановление | |
Ситуация в целом схожая, нужно подмонтироваться к уже существующему контейнеру и просто распаковать данные в нужную папку. | |
Что делаем? | |
Подключимся руками, что бы точно быть уверенными что все прошло правильно. | |
docker run --rm --volumes-from load-site_elk2_1 -v C:\Users\WeslyG\git\sandbox:/backup -it ubuntu bash | |
Теперь мы в контейнере в папке /backup у нас лежит наш бекап, нам нужно распаковать его в папку /usr/share/elasticsearch | |
Можно пойти простым путем, и распаковать tar прям в локальную папку, потом переместить нужную (потому что tar -C у меня выпендривался) | |
tar -xvf backup.tar | |
cp -Rv data /usr/share/elasticsearch/ | |
нужно ребутнуть контейнер, что бы elk начал нормально отдавать данные | |
Можно это сделать не выходя из нашего временного контейнера в другой вкладке | |
docker stop id | |
docker start id | |
проверяем curl localhost:9200/_cat/indices | |
Все должно быть огонь) | |
Теперь можно выйти из временного контейнера. | |
Не забываем, что когда мы прописали флаг --rm контейнер удалиться после выхода из него. | |
Так же было бы не плохо удалить распакованную папку с tar архивом. | |
p.s если знаете адекватный способ tar -> folder force напишите) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment