Docker快速创建MySQL实例
很多同学如果不会安装MySQL或者懒得安装MySQL,可以使用一下命令快速运行一个MySQL5.7实例,当然前提是你要有docker环境…
一.安装docker
1.查看内核,版本必须高于3.10
uname -r
2.移除旧的版本
sudo yum remove docker*
3.yum 包更新到最新
sudo yum update
4.安装需要的软件包, yum-util 提供yum-confifig-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5.设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker- ce.repo
6.安装docker
sudo yum -y install docker-ce
7.安装后查看docker版本
docker -v
8.启动 Docker 后台服务
sudo systemctl start docker
二、docker安装MySQL5.7
安装前,,先设置阿里云镜像加速,,强烈推荐....否则那个速度实在感人
注册一个阿里云账号,进入阿里云镜像加速模块
1.查找MySQL的可用镜像
docker search mysql
或者去下面网址里查找版本
2.拉取 MySQL
docker pull mysql:5.7.31
3.创建本地路径并挂载Docker内数据
创建本地文件夹
mkdir -p /root/docker/mysql/conf && mkdir -p /root/docker/mysql/data
或者
mkdir -p /root/docker/mysql/{conf,data}
新建配置文件
vim /root/docker/mysql/conf/mysqld.cnf
内容如下:
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
lower_case_table_names=1 #实现mysql不区分大小(开发需求,建议开启)
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
# 12.更改字符集 如果想Mysql在后续的操作中中文不出现乱码,则需要修改配置文件内容
symbolic-links=0
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
4.创建 MySQL 容器并启动
docker run --name mysql-service5.7
--restart always
--privileged=true
-p 33306:3306
--mount type=bind,src=/root/docker/mysql/conf/mysqld.cnf,dst=/etc/mysql/mysql.conf.d/mysqld.cnf
--mount type=bind,src=/root/docker/mysql/data,dst=/var/lib/mysql
-e MYSQL_USER="haima"
-e MYSQL_PASSWORD="123456"
-e MYSQL_ROOT_PASSWORD="123456"
-d mysql:5.7.31
解释说明
--name:为容器指定一个名字
–restart always:开机启动
–privileged=true:提升容器内权限
-mount 宿主机里的mysql.cnf:容器里的配置文件的mysqld.cnf:绑定挂载 映射配置文件
-mount 宿主机里的数据目录data:容器里的数据目录data:绑定挂载 映射数据目录
-e MYSQL_USER=”haima”:添加用户fengwei
-e MYSQL_PASSWORD=”123456”:设置haima用户的密码为123456
-e MYSQL_ROOT_PASSWORD=”123456”:设置root的密码为123456
-d:后台运行容器,并返回容器 id
5.进入Docker容器内
docker exec -it mysql-service5.7 /bin/bash
登录mysql
mysql -uroot -p123456
查看mysql字符集命令
show variables like '%char%';
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
查看确定Docker内 MySQL 文件相关路径
查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
6.退出mysql
exit
7.操作容器
docker restart mysql-service5.7
docker stop mysql-service5.7
docker start mysql-service5.7
docker rm mysql-service5.7 #容器停止时才能删除
再进mysql里看一下mysql字符集命令,已经ok了
navicat 连接mysql
启动navicat, 连接宿主机的公网IP ,指定端口为配置的33306,,账户root,密码123456
这里的宿主机ip起始就是服务器(或者是虚拟机)的ip
至此已经mysql已经安装成功了,mysql的数据和配置文件已经挂载到宿主机的/root/docker/mysql目录里了,
即使删除容器数据也不会丢了,
下次再重新挂载到宿主机的/root/docker/mysql目录里了,数据就又回来了.
三.设置开机自动启动容器
在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
docker run --restart=always CONTAINER ID
如果已经启动了,没有设置开机启动,则可以使用如下命令:
docker update --restart=always CONTAINER ID