#linux #postgresql #docker #timescaledb
Вопрос:
В настоящее время я управляю своим докером для postgresql(TimescaleDB) таким образом, открывая докер на экране для запуска в фоновом режиме. Чтобы я всегда мог проверить это с помощью экрана.
screen -dmS i2 screen -S i2 -X stuff 'docker run -ti --user 1000:1000 -p 5432:5432 --name timescaledb --volume=/home/ubuntu/pgdata3:/home/postgresql/pgdata --rm -e POSTGRES_PASSWORD=sdjaisiisiauda123114892u3hihi -e PGDATA=/home/postgresql/pgdata timescale/timescaledb-ha:pg13-latest;n'
Я также использую EC2, и я случайно запросил большой объем, и я хотел вернуться к машине с малым объемом. И я уже использовал эту обширную базу данных, так что я не хочу восстанавливать данные на новой машине.
Мой вопрос: как перенести этот образ/снимок/экземпляр docker (мой термин может быть неточным) на другую машину и запустить с другой машины, используя ту же команду?
Спасибо
Ответ №1:
Вам не нужно переносить образ docker — для этого и предназначен docker. Вам просто нужно перенести данные.
--volume=/home/ubuntu/pgdata3:/home/postgresql/pgdata
Это важная часть — сопоставление папки данных внутри контейнера /home/ubuntu/pgdata3
с корневой файловой системой. Итак, остановите свой контейнер, заархивируйте эту папку, распакуйте ее на новой машине в том же месте и выполните команду docker сверху на новой машине.
Кроме того — вам действительно не нужно использовать для этого «экран» — docker run --detach
(вместо -ti
) будет делать то же самое.
Если вы работаете на aws и хотите сделать это еще проще, вы можете смонтировать том EBS в этом месте на новом компьютере перед распаковкой данных, а в будущем вы можете просто подключить этот том к новому компьютеру вместо выполнения процесса zip/распаковки.
Комментарии:
1. Большое вам спасибо за вашу помощь! Ты многому меня научил!