преобразование тома docker mysql из контейнера в общий каталог

Я хотел бы изменить существующий том docker mysql, содержащий мои базы данных в контейнере, с:

/var/lib/docker/volumes/docker_data

на общий том, например

/mysql_data

но когда я меняю параметр громкости docker-compose.yml с:

- data:/var/lib/mysql

to

- /mysql_data:/var/lib/mysql

Я теряю все файлы базы данных, и mysql запускается как установка vanilla.

Как я могу переместить или иным образом изменить существующее хранилище контейнера mysql на общее хранилище?


person gungu    schedule 17.08.2020    source источник
comment
я должен сказать, что мое решение состояло в том, чтобы сделать резервную копию базы данных в докере с помощью команды docker exec в общий каталог, а затем импортировать резервную копию через mysql workbench   -  person gungu    schedule 21.08.2020


Ответы (2)


Если вы создаете контейнер с обоими креплениями, вы можете копировать данные из одного места в другое.

docker run \
  --rm \                 # don't keep this container after exit
  -v docker_data:/old \  # mount the old directory
  -v /mysql_data:/new \  # mount the new directory
  -w /old \              # cd /old
  busybox \              # image to run
  cp -a . /new           # command to run

По большей части вам нужно находиться внутри контейнера Docker для доступа к томам Docker. Обсуждение документации Docker по резервному копированию и восстановлению томов также использует эту технику.

person David Maze    schedule 17.08.2020

Во-первых, вам нужно создать контейнер тома данных, что довольно просто.

$ docker create -v /var/lib/mysql --name mysqldata mysql

Затем вам нужно смонтировать контейнер тома данных mysqldata при запуске контейнера MySQL, в котором будет работать MySQL.

$ docker run --name mysqldb --volumes-from mysqldata -e MYSQL_ROOT_PASSWORD=password -p 3307:3306 mysql

Для быстрого тестирования добавьте несколько данных, удалите существующий контейнер и повторно запустите новый. вы увидите, что ваши данные являются постоянными.

Та же эквивалентная команда, которую вы можете использовать в своем файле yaml.

person Anil Kumar Gupta    schedule 17.08.2020