加载镜像
离线方式
1.1 将离线镜像拷贝到服务器 /usr/local/images/目录下
mysql.tar
1.2 Docker加载本地MySQL镜像
docker load -i /usr/local/images/mysql.tar
在线方式
1.1 拉取镜像
docker pull mysql:5.7
检查镜像是否被加载
docker images
启动容器
命令说明:
docker run [Options] image
#参数说明
--name="名字" 指定容器名字
--restart=always 设置容器自启动
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口
-p ip:主机端口:容器端口 配置主机端口映射到容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机指定端口
-e 环境设置
-v 容器数据卷挂载
启动mysql 设置密码、设置挂载数据卷
docker run \
-d \
-p 3306:3306 \
--name mysql5.7 \
--restart=always \
-v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -v /home/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=自己的密码 \
mysql # 镜像名 默认是mysql:latest 其他版本需要选择自己的镜像版本 例如:mysql:5.7
我的启动案例:
docker run -p 13306:3306 --name mysql5.7 --restart=always -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -v /home/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
检查MySQL是否启动成功
docker ps
进入容器命令说明:
docker exec -it 容器id/容器name /bin/bash
设置允许外部访问
#进入容器
docker exec -it mysql /bin/bash
#登录MySQL
mysql -uroot -proot
# 修改root 可以通过任何客户端连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
修改配置文件
1.查看一下容器绑定的配置文件目录
docker inspect 镜像ID
[atguigu@hadoop102 etc]$ sudo docker inspect 144
2.进入本地映射的配置目录,添加相应配置
1)进入本地映射的配置目录
[root@hadoop102 ~]# cd /home/mysql/conf/
2)添加相应配置
[root@hadoop102 conf]# vim my.cnf
3)重启MySQL
[root@hadoop102 conf]# docker restart 144
144
3.原理
进入mysql容器,查看默认的配置文件
sudo docker exec -it 144 /bin/bash
cat /etc/my.cnf
[mysqld]
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
请注意:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
在原来的基础上会加上 /etc/mysql/conf.d/的配置文件,重名的配置会被替换,未重名的会新增,所以进入到/etc/mysql/conf.d/映射的本地路径,就可以达到目的
4.验证
进入mysql执行如下命令:
show VARIABLES LIKE '%你设置的变量名%';