Docker之MySQL的使用
拉取Mysql镜像
docker中国加速:docker pull registry.docker-cn.com/library/
docke-hub地址:https://hub.docker.com/r/_/mysql/
查看TAG
选取需要的版本下载,命令为
docker pull registry.docker-cn.com/library/mysql:TAG
我选择了5.6.42版本
[root@localhost bin]# docker pull registry.docker-cn.com/library/mysql:5.6.42
启动Mysql5.6
现在我们启动一个容器,名字为MYSQL5.6,这里介绍两种方式:
· Configuration without a cnf
file方式
参照官方文档,我们可以不使用配置文件,可以用命令行参数的方式去设置MySQL的一些属性,配置;
运行命令为:
docker run \
--name MYSQL5.6 \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-d a46c \
--character-set-server=utf8 \
--collation-server=utf8_unicode_ci
参数说明(每一行后面的\
是Linux命令换行):
-e
设置容器相关参数,这里是设置root密码为123456(其他设置,可以参照官方文档:mysql-docker)
-p
做端口映射,将主机的3306端口
映射到容器的3306端口
-d
后台启动,参数可以是镜像的IMAGE_ID
,也可以是name:TAG
最后两行是对这个容器的字符编码,和排序规则的设置
· 使用配置文件挂载方式
参照官方文档,
我们可以将主机目录挂载到容器内的指定目录,这样就可以在主机目录下存放我们的配置文件,让容器加载;
首先,新建一个需要被挂载的主机目录,这里我们选择在/home/docker-conf/mysql
下
然后在此目录下新建cnf
和data
目录,
在cnf
目录下新建my.cnf
文件,内容是
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8
最终的目录结构如下:
然后,就是以挂载配置文件的方式启动一个mysql容器了:
参照官方文档的说明,我们可以将我们自定义的配置文件目录挂载到/etc/mysql/conf.d
,这样就会被容器找到;
docker run --name MYSQL02 -v /home/docker-conf/mysql/conf/:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d a46c
参数说明:
-v
就是把主机目录挂载到容器目录,这里我们将/home/docker-conf/mysql/conf
挂载到容器内部的/etc/mysql/conf.d
启动成功!
这里我们也可以将data
数据目录进行挂载,容器内部的数据目录是:/var/lib/mysql
,这里不再演示;
验证Mysql连接
在此之前,请确认主机防火墙开放了相应端口;
这里我使用Navicat进行测试:
测试3306端口的连接
测试3307端口的连接
测试连接成功;
查看字符编码
SHOW VARIABLES LIKE '%char%'