@ince

Как развернуть копию контейнера с сохранением состояния?

Есть докер контейнер с запущенной на ней базой.
В базу забиты данные.
Как завернуть текущий контейнер и запустить его копию рядом, чтобы сохранилось исходное состояние (данные в базе).
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
По-хорошему лучше монтировать в докер-контейнер volume с данными: держать данные отдельно от движка.
docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

### или создать дата-volume и его приделать к контейнеру
docker volume create data_volume
docker run --name some-mysql -v data_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
### так после выключения контейнера данные не пропадут, останутся в этом data_volume, 
### который можно скопировать, подключить к другим контейнерам

Но, тем не менее:

Вариант 1.
Экспортировать в папку на хосте данные из базы с помощью mysqldump или какая там у вас база. Бэкапы, в любом случае, делать необходимо. Поднять копию контейнера, импортировать в неё данные из дампа. Примеры команд для mysql в docker см. внизу в секции Creating database dumps:
### Creating database dumps
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

### Restoring data from dump files
docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql


Вариант 2.
Сохранить текущее состояние контейнера через docker commit — получится новый образ со всеми изменениями. Запустить его как копию.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы