docker安装mysql
- mac的m1芯片上不支持5.7版本的镜像,因此可以直接选择拉取8.0及之后的版本
docker pull mysql
- 创建mysql的宿主机数据卷挂载的文件夹
# mysql的配置文件,注意conf.d文件夹必须要创建,否则启动容器的时候,数据卷
# 会挂载失败
mkdir -p /mydata/mysql/conf/conf.d
# mysql的数据文件夹
mkdir -p /mydata/mysql/data
# mysql的日志文件夹
mkdir -p /mydata/mysql/log
- 先启动一个mysql镜像,为了拷贝mysql的配置文件,给这个临时的容器起一个名字,叫做test_mysql,待会要删除掉
docker run -dit --name test_mysql mysql /bin/bash
- 进入mysql容器
docker exec -it test_mysql /bin/bash
- 查看当前mysql容器默认的配置文件的位置以及配置文件的优先级顺序
mysql --help | grep my.cnf
上图的输入内容解释:
/etc/my.cnf
、/etc/mysql/my.cnf
、/usr/etc/my.cnf
、~/.my.cnf
,把mysql的配置文件my.cnf
放到这几个地方,mysql才会识别,并且如果这几个地方如果都有配置文件,那么mysql的加载顺序将严格按照上图输出的顺序,按照我的理解,前面的配置项将会被后面的配置项覆盖,这里我们选择的是在/etc/mysql
文件夹下面挂载我们的配置文件,但是进入容器后,会发现改目录下面并没有配置文件,但是/etc/my.cnf
下面有,因此我们只需要把/etc/my.cnf
文件拷贝到宿主机,然后将其移动到宿主机中/etc/mysql
对应的数据卷下即可。
- 拷贝mysql容器中
/etc/my.cnf
到宿主机/mydata/mysql/conf
目录下
docker cp test_mysql:/etc/my.cnf /mydata/mysql/conf
7. 启动容器
docker run -p 3306:3306 --name mysql1 -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=dingqinglei. -d mysql
- 删除test_mysql容器
docker rm -f test_mysql