Задать вопрос

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

Контейнер с mysql базой. Как "выгрузить" контейнер и перенести на другую машину, чтобы таблицы и состояния сохранились?
  • Вопрос задан
  • 13135 просмотров
Подписаться 8 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
akelsey
@akelsey
При условии если том примонтирован в хостовую систему (для mysql это обычно /etc/mysql & /var/lib/mysql), и совсем хорошо если это docker-compose то особо ничего, просто останавливаете контейнер, и копируете папку с данными на новый докер хост.
А если случай какой-то иной, способы схожи, но универсального нет, нужны детали.
Ответ написан
Комментировать
IgorPI
@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
@gohdan
Системный администратор
Если нужно перенести прямо контейнер как есть, то есть команда docker save, она позволяет сохранить текущую файловую систему хранилища в tar-архив. Потом на другой машине можно сделать docker load этого архива, он подгрузится как docker image. На базе этого docker image можно запустить другой контейнер. Параметры запуска можно взять из docker inspect старого контейнера.

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

Войдите, чтобы написать ответ

Похожие вопросы