如何解决将docker mysql卷从容器转换为共享目录
我想从以下容器中更改一个包含我的数据库的现有docker mysql卷:
/var/lib/docker/volumes/docker_data
共享卷,例如
/mysql_data
但是当我从以下位置更改docker-compose.yml
音量参数时:
- data:/var/lib/mysql
到
- /mysql_data:/var/lib/mysql
我丢失了所有数据库文件,并且在原始安装时mysql启动。
如何将现有的容器mysql存储移动或更改为共享存储?
解决方法
首先,您需要创建一个非常简单的数据卷容器。
$ docker create -v /var/lib/mysql --name mysqldata mysql
接下来,在运行将运行MySQL的MySQL容器时,需要安装数据卷容器“ mysqldata”。
$ docker run --name mysqldb --volumes-from mysqldata -e MYSQL_ROOT_PASSWORD=password -p 3307:3306 mysql
要进行快速测试,请添加少量数据并删除现有容器,然后重新运行新容器。您将看到您的数据是持久的。
您可以在yaml文件中使用的等效命令。
,如果创建同时具有两个安装座的容器,则可以将数据从一个位置复制到另一个位置。
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文档在backing up and restoring volumes上的讨论也使用了这种技术。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。