Как перенести контейнер Docker на другую машину?



@thatmaniscool

Контейнер с mysql базой. Как «выгрузить» контейнер и перенести на другую машину, чтобы таблицы и состояния сохранились?


Решения вопроса 0


Ответы на вопрос 3



@akelsey

При условии если том примонтирован в хостовую систему (для mysql это обычно /etc/mysql & /var/lib/mysql), и совсем хорошо если это docker-compose то особо ничего, просто останавливаете контейнер, и копируете папку с данными на новый докер хост.
А если случай какой-то иной, способы схожи, но универсального нет, нужны детали.



@IgorPI

1. Копируете файлы базы данных на хост
2. Архивируете/Переносите
3. Поднимаете проект на другом хосте
4. Копируете файлы с хоста в контейнер

В вашем распоряжении есть

docker compose cp

https://docs.docker.com/engine/reference/commandli…

А вообще не вижу проблем с созданием полного дампа с последующим восстановлением.

docker-compose exec [service] mysqldump -u [user name] –p [password] [options] [database_name] [tablename] > [dumpfilename.sql]

Или

docker exec -t [hash container] mysqldump -u [user name] –p [password] [options] [database_name] [tablename] > [dumpfilename.sql]



@gohdan

Если нужно перенести прямо контейнер как есть, то есть команда docker save, она позволяет сохранить текущую файловую систему хранилища в tar-архив. Потом на другой машине можно сделать docker load этого архива, он подгрузится как docker image. На базе этого docker image можно запустить другой контейнер. Параметры запуска можно взять из docker inspect старого контейнера.

Но, как уже написали выше, это плохое решение для плохой ситуации. Не надо держать в контейнерах базы данных и конфиги, они должны лежать отдельно на файловой системе хоста, тогда можно просто остановить контейнер, всё это скопировать на другую машину и там запустить контейнер аналогично старому.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *