1.镜像
# 拉取MySQL镜像,可以自定义版本。这里是8.0.25
docker pull mysql:8.0.25
# 注意,启动容器时尽量挂载MySQL容器里的配置文件,不然如果直接在容器里修改,如果发生错误,那么容器将再也启动不了
## MySQL8.0.25的配置文件在/etc/mysql/my.cnf,数据存放在/var/lib/mysql/。这里我将挂载这两个目录
## -v /etc/localtime:/etc/localtime:ro 保证宿主机时间和容器的时间一致
## -v 宿主机路径/my.cnf:/etc/mysql/my.cnf,挂载配置文件要求宿主机需要创建该my.cnf文件
## -v 宿主机路径/data:/var/lib/mysql/,挂载容器MySQL存放数据的目录
## -d 镜像ID,可以通过命令docker images查询MySQL镜像ID
docker run -p 3306:3306 --name mysql -v /etc/localtime:/etc/localtime:ro -v 宿主机路径/my.cnf:/etc/mysql/my.cnf -v 宿主机路径/data:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=密码 -d 镜像ID
# 查看是否启动完成
docker ps -a
2.配置文件
# 查询时报(sql_mode=only_full_group_by)错误,编辑配置文件vi 宿主机路径/my.cnf
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 启动之后在MySQL控制台界面无法输入中文的解决方法,编辑配置文件vi 宿主机路径/my.cnf
character-set-server=utf8
# 重启MySQL容器
docker restart MySQL容器名称