как перенести docker на другую машину без клонирования всей машины

#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. Большое вам спасибо за вашу помощь! Ты многому меня научил!