多语言展示
当前在线:392今日阅读:103今日分享:49

Docker 安装MySQL并配置my.cnf

用docker启动MySQL后,无法配置my.cnf文件。下面介绍一下Docker 中配置my.cnf的方法
工具/原料
1

Ubuntu 14.04

2

Docker

3

MySQL5.7

方法/步骤
1

直接docker pull mysql:5.7,等待下载安装完成

2

然后先创建一个临时的mysql,以便复制出my.cnf等数据docker run --rm --name mysqlTemp -it -v /usr/local/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7 /bin/bashcp /etc/mysql/my.cnf /var/lib/mysql-- rm 退出后就删除该容器-v /usr/local/mysql/:/var/lib/mysql  装主机目录/usr/local/mysql/映射Docker中的/var/lib/mysql目录-it 交互模式/bin/bash 进入 bash 命令模式

3

拷贝配置文件,把Docker中的/etc/mysql/my.cnf文件拷贝到Docker的/var/lib/mysql目录,及主机的/usr/local/mysql/目录中cp /etc/mysql/my.cnf /var/lib/mysql

5

这里的my.cnf文件不是完整的mysql配置,而是引用了其他目录下的。我们可以看到这里引用了二个目录,可以在第一个bash终端中ls查看这二个目录/etc/mysql/conf.d//etc/mysql/mysql.conf.d/

6

同样把这二个目录拷贝到/var/lib/mysql下cp -R /etc/mysql/conf.d/ /var/lib/mysql/conf.dcp -R /etc/mysql/mysql.conf.d/ /var/lib/mysql/mysql.conf.d

7

退出bash,Docker中临时用的mysqlTemp会被删除然后可以查看/usr/local/mysql/目录下有mysql所有的配置文件

8

这里就可以修改配置了。改完之后,创建正式的mysql容器docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123455 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/conf.d:/etc/mysql/conf.d -v /usr/local/mysql/mysql.conf.d:/etc/mysql/mysql.conf.d -d mysql:5.7如果my.cnf 是完整的配置,这里不需要映射conf.d和mysql.conf.d这二个目录docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123455 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf  -d mysql:5.7--name 容器名称-p 端口映射-v 配置文件映射:将 宿主机上修改的自定义配置文件,映射到 容器中-e MYSQL_ROOT_PASSWORD   设置root密码-d 守护进程模式运行

9

还有另一种办法,就是从docker镜像文件里面复制出配置文件来。就是用 find / -name my.cnf 全盘搜索这里已经启动过容器且主机上有一份了,如果没有,只会在/var/lib/docker/aufs/diff目录下存在

10

进入diff下mysql所在的目录cd /var/lib/docker/aufs/diff/bf865af347ec8b51bd8e949436b8dcde762de61c6e649c6a779fd79f13493e82/etc/mysql/可以看到同样的配置文件,其中my.cnf是红色的,这是一个连接文件,找到原文件在alternatives/my.cnf下。把这几个配置复制出来,参考第8步,也可以配置mysql

推荐信息