Docker for windows部署mysql挂载数据卷

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

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

我已开始以为是 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文件夹里面什么都没有。难道不能直接这么创建?
我试了 https://docs.docker.com/engine/reference/commandline/volume_create/

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-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#以下是手动添加的其他配置

character-set-server=utf8

default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

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

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

http://www.fwhyy.com/2018/05/docker-installs-mysql-to-mount-external-data-and-configuration/

然后我的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终于运行起来了

posted @ 2018-07-11 14:16  T林飘叶  阅读(897)  评论(0编辑  收藏  举报