Docker启动mysql (挂载配置文件)

1、拉取镜像

docker pull [mysql镜像名称]
即:docker pull mysql
说明:如果不带版本号则默认获取最新的版本latest

2、挂载数据卷以及配置文件

2.1、先创建一个mysql容器

运行mysql命名容器名称为mysql-service并且设置root账号初始密码为root

docker run -d -p 3306:3306 --name mysql-service -e MYSQL_ROOT_PASSWORD=root  mysql
2.2、进入Docker容器内
docker exec -it mysql-service bash
image.png
2.3、确定Docker内 MySQL 文件相关路径

查找Docker内,MySQL配置文件my.cnf的位置

mysql --help | grep my.cnf
2.4、创建本地路径并挂载Docker内数据

创建本地文件夹

mkdir -p /root/docker/mysql/conf && mkdir -p /root/docker/mysql/data

将测试容器里 MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可

docker cp mysql-service:/etc/mysql/my.cnf /root/docker/mysql/conf

拷贝完配置文件后,停掉容器并删除,重新创建带配置文件挂载的服务

3、创建 MySQL 容器并启动

docker run --name mysql-server \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
--mount type=bind,src=/root/docker/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
--mount type=bind,src=/root/docker/mysql/data,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql

--name:为容器指定一个名字
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
-e:MYSQL_ROOT_PASSWORD="xxx",设置环境变量,密码
--restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
-mount:绑定挂载
-d:后台运行容器,并返回容器 id

4、更改字符集

如果想Mysql在后续的操作中中文不出现乱码,则需要修改配置文件内容

登录mysql

mysql -uroot -p

查看mysql字符集命令

show variables like '%char%';
4.1、修改配置文件

添加到 my.cnf
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

4.2、重启docker mysql-server容器

docker restart mysql-server

5、其它制作方法

docker run --name mysql01 -p 3306:3306 -v /home/mysql01/data:/var/lib/mysql -v /home/mysql01/conf:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=1qa2ws -d mysql:5.6.21

说明:
-v /home/mysql01/conf:/etc/mysql 指定本地目录/home/mysql01/conf映射到docker镜像的/etc/mysql, 这样就可以在/home/mysql01/conf目录下建立配置文件my.cnf,并使之起作用.

-v /home/mysql56/data:/var/lib/mysql 把镜像数据库路径映射到本地的/home/mysql56/data

你可能感兴趣的:(Docker启动mysql (挂载配置文件))