1、拉取镜像
以mysql5.7为例
docker pull mysql:5.7
2、启动MySQL(容器卷方式)
docker run -d -p 3306:3306 --privileged=true -v /apply/mysql/log:/var/log/mysql -v /apply/mysql/data:/var/lib/mysql -v/apply/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
-d:代表后台启动
-p:代表端口映射到主机,前面是主机端口,“:”后是容器端口
-v:代表挂载目录, /apply/mysql/log是主机目录,没有会自动创建,“:”后是容器目录,多个-v可挂载多个目录,这里挂载了log日志、data数据和配置文件
-e:设置密码
–name给容器设置别名
mysql:5.7是容器名+版本号
3、设置开机自启
- 进入容器:docker exec -it 容器ID /bin/bash
- 进入MySQL:mysql -uroot -p
- 设置开机自启:docker update --restart=always mysql
4、可能会遇到的坑
1.表中插入中文可能会报错,中文乱码。
进入容器,进入mysql,查询编码
SHOW VARIABLES LIKE 'character%'
2.如果不是UTF-8,在挂载的/apply/mysql/conf文件夹新建my.cnf文件,配置以下内容
[client]
default_character_set = utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
5、附 开启binlog日志
1、查看binlog是否开启日志.ON为开,OFF为关。
SHOW VARIABLES LIKE 'log_bin'
查看binlog日志目录:show global variables like "%log_bin%";
查看binlog日志:/usr/bin/mysqlbinlog --no-defaults mysql-bin.000001
2、在挂载的conf目录新建my.cnf文件,写入以下内容并重启mysql
[client]
default_character_set = utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
#开启bin_log日志
log-bin=/var/lib/mysql/mysql-bin
server-id=1
binlog_format=MIXED
expire_logs_days=30
3、启动的时候已经挂载到/apply/mysql/data文件夹,产生的binlog日志可以在这里看到