以 mysql 5.7 为例:
docker pull mysql
# 1、以不挂载目录的形式创建容器,将容器中 my.cnf 文件复制到宿主机中
docker run --restart=always --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 -d mysql:latest \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker cp mysql:/etc/my.cnf /Users/wml/alidata/data/docker/mysql/my.cnf
# 2、删除 mysql 容器,重新创建
docker container stop mysql
docker container rm mysql
docker run --restart=always --name mysql -p 3306:3306 \
-v /Users/wml/alidata/data/docker/mysql/my.cnf:/etc/my.cnf \
-v /Users/wml/alidata/data/docker/mysql/data/:/var/lib/mysql \
--network lnmp -e MYSQL_ROOT_PASSWORD=111111 -d mysql:latest \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# 3、在宿主机中修改 my.cnf 配置文件,增加错误日志和慢查询日志纪录配置
mkdir /Users/wml/alidata/data/docker/mysql/data/log
touch /Users/wml/alidata/data/docker/mysql/data/log/mysql_error.log
[mysqld]
# 错误日志配置
log-error=/var/lib/mysql/log/mysql_error.log
# 慢查询日志配置
# 表示是否开启慢查询日志,1开0关
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/log/mysql_slow_query.log
# 表示查询时间>=1秒才记录日志,默认10s
long_query_time = 1
--restart=always
# 设置Docker启动后自动运行
--name mysql
# 此容器的别名
-p 3306:3306
# 前面是暴露出去的端口,后面是容器内部的服务端口
-v ~/mysql:/var/lib/mysql
本地目录:容器路径
-e MYSQL_ROOT_PASSWOR
root用户的密码
-d
后台运行
mysql:latest
指定 mysql docker 镜像