linux下docker通过挂载数据卷到 mysql实现容器配置本地化

前言:当希望在本地上配置容器中的mysql时,发现一个问题,本地需要完整的配置文件目录,如果本地是空目录,那么容器中的配置目录也是空的所以不能运行镜像,这里解决这个问题,思路是任意运行一个容器,把里面的配置目录复制到本地,然后删除这个容器,再创建新的容器,并把复制出来的配置目录和容器中的配置目录同步,这里记录下这个过程。

第一步:创建一个本地配置目录

输入命令:mkdir -p /root/DockerCommonConfig/MysqlConfig/,建立文件夹路径。

第二步:创建任意一个镜像并映射配置目录

docker run -d -p 3306:3306 -v $("pwd):/app --name tempMysql -e MYSQL_ROOT_PASSWORD=123456 mysql 

ps:暂时把本地配置目录和容器中的app文件夹关联(不能直接关联容器配置目录,由于文件同步原因这会导致容器配置目录为空无法启动容器),后续会把容器的配置文件复制到app,达到复制容器文件的目的。

-v 表示挂载数据卷,格式是 -v localPath:containerPath  本地目录:容器目录

$("pwd") 表示当前目录的路径,具体自己控制台输入 echo $("pwd") 尝试。

-e 参数必须有 否则容器无法启动

输入docker ps -a 查看status是Up的就算启动成功

第三步:复制配置目录到本地

docker exec -it tempMysql /bin/bash 进入容器命令行,

通过指令:cp -r /etc/mysql /app 指令把etc目录下的mysql文件夹,复制到app目录下,由于之前做了本地同步,所以能看到本地文件夹内有mysql文件夹,如下

第四步:删除容器并创建新容器再同步配置目录

通过docker stop tempMysql 停止容器,通过docker rm tempMysql 删除容器,然后本地进入mysql文件夹和容器中的mysql文件夹做同步。

docker run -d -p 3306:3306 -v $("pwd):/etc/mysql --name localMysql -e MYSQL_ROOT_PASSWORD=123456 mysql 

成功启动呦~~,虽然不知道是不是姿势不对,这么大费周章。。。

猜你喜欢

转载自blog.csdn.net/u014690615/article/details/83692683