博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker for windows部署mysql挂载数据卷
阅读量:7052 次
发布时间:2019-06-28

本文共 1688 字,大约阅读时间需要 5 分钟。

这段时间在 学习提升,其中涉及到docker在Windows上部署mysql的问题,让我很头疼,经过我的努力,算是半解决了这个问题,为什么是半呢,看过就知道了

mysql挂载 /etc/my.cnf 的时候没有什么问题,主要是在 /var/lib/mysql 的时候会出现

999985-20180711141211786-1391021930.png

我已开始以为是 Windows下路径的问题,我试过了

e:/docker/mymysql/data/e/docker/mymysql/data//e/docker/mymysql/data

都不行,然后看到说可以先在要使用的文件夹的位置上创建一个 volume, 再使用创建的 volume 挂载到容器上去,我进入 e:/docker/mymysql/data 文件夹

docker create --name mymysql-data

挂载到mysql之后,我的data文件夹里面什么都没有。难道不能直接这么创建?

我试了

docker create -d e:/docker/mymysql/data --name mymysql-data

多种参数,都没有创建成功,这个方法失败了。

这个方法可能再别的电脑上是可以的,可是在我这确实是行不通的,如果是我创建的有问题欢迎大家提出来。

重新看提示的问题,就是因为 /var/lib/mysql/mysql.sock,(在data文件夹中不存在,即使是我手动创建一个,也会被删除并提示这个问题)

这个文件既然不能放在外面那么放进去呢?

在my.cnf中添加了

socket=/var/lib/mysql.sock

还是不行,

然后我在看mysql生成的my.cnf文件的时候发现了一个有意思的配置

[mysqld]skip-host-cacheskip-name-resolvedatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksecure-file-priv=/var/lib/mysql-filesuser=mysql#log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid#以下是手动添加的其他配置character-set-server=utf8default_authentication_plugin=mysql_native_password[client]default-character-set=utf8[mysql]default-character-set=utf8

原来数据库的位置是可以配置的,挂载mysql文件夹不就是想要数据库文件放在容器外面的么

既然mysql.sock不能换位置,那么就把 datadir=/var/lib/mysql/data

然后我的docker 命令:

docker run -p 3306:3306  --privileged=true  --restart always  --name mymysql  -e MYSQL_USER=fanqinglin  -e MYSQL_PASSWORD=123456  -e MYSQL_ROOT_PASSWORD=123456  --mount type=bind,source=e:/docker/mymysql/config/my.cnf,target=/etc/my.cnf  --mount type=bind,source=e:/docker/mymysql/data,target=/var/lib/mysql/data  --mount type=bind,source=e:/docker/mymysql/scripts/,target=/docker-entrypoint-initdb.d/  -d mysql/mysql-server

嘿嘿嘿,到这里docker里面的mysql终于运行起来了

999985-20180711141234699-1336538168.png

999985-20180711141242949-1020657832.png

转载于:https://www.cnblogs.com/T-FQlin/p/9294208.html

你可能感兴趣的文章