将docker mysql卷从容器转换为共享目录

将docker mysql卷从容器转换为共享目录,mysql,docker,docker-compose,Mysql,Docker,Docker Compose,我想将容器中包含我的数据库的现有docker mysql卷更改为: /var/lib/docker/volumes/docker_data 共享卷,如 /mysql_data 但是当我将docker compose.ymlvolume参数从: - data:/var/lib/mysql 到 我丢失了所有的数据库文件,mysql开始安装 如何将现有容器mysql存储移动或更改为共享存储?首先,您需要创建一个非常简单的数据卷容器 $ docker create -v /var/lib/mysq

我想将容器中包含我的数据库的现有docker mysql卷更改为:

/var/lib/docker/volumes/docker_data
共享卷,如

/mysql_data
但是当我将
docker compose.yml
volume参数从:

- data:/var/lib/mysql

我丢失了所有的数据库文件,mysql开始安装


如何将现有容器mysql存储移动或更改为共享存储?

首先,您需要创建一个非常简单的数据卷容器

$ docker create -v /var/lib/mysql --name mysqldata mysql
接下来,在运行MySQL容器时,需要装载数据卷容器“mysqldata”,该容器将运行MySQL

$ docker run --name mysqldb --volumes-from mysqldata -e MYSQL_ROOT_PASSWORD=password -p 3307:3306 mysql
要快速测试,请添加少量数据并删除现有容器,然后重新运行新容器。您将看到您的数据是持久的


您可以在yaml文件中使用相同的等效命令。

首先,您需要创建一个非常简单的数据卷容器

$ docker create -v /var/lib/mysql --name mysqldata mysql
接下来,在运行MySQL容器时,需要装载数据卷容器“mysqldata”,该容器将运行MySQL

$ docker run --name mysqldb --volumes-from mysqldata -e MYSQL_ROOT_PASSWORD=password -p 3307:3306 mysql
要快速测试,请添加少量数据并删除现有容器,然后重新运行新容器。您将看到您的数据是持久的


您可以在yaml文件中使用相同的等效命令。

如果您创建一个包含两个装载的容器,则可以将数据从一个位置复制到另一个位置

docker运行\
--rm \#退出后不要保留此容器
-v docker_data:/old\#装载旧目录
-v/mysql_data:/new\#装载新目录
-w/旧\#cd/旧
要运行的busybox \#映像
cp-a/要运行的新#命令

在大多数情况下,您实际上需要在Docker容器中才能访问Docker卷。Docker文档中关于的讨论也使用了这种技术。

如果您创建了一个同时具有两个装载的容器,则可以将数据从一个位置复制到另一个位置

docker运行\
--rm \#退出后不要保留此容器
-v docker_data:/old\#装载旧目录
-v/mysql_data:/new\#装载新目录
-w/旧\#cd/旧
要运行的busybox \#映像
cp-a/要运行的新#命令

在大多数情况下,您实际上需要在Docker容器中才能访问Docker卷。Docker文档对的讨论也使用了这种技术。

我应该说我的解决方案是使用Docker exec命令将Docker内的数据库备份到共享目录,然后通过mysql Workbench导入备份。我应该说我的解决方案是使用Docker exec命令将Docker内的数据库备份到共享目录共享目录,然后通过mysql workbench导入备份