进入Docker镜像下载页面,安装Docker,这里我选择CE个人版
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
将Docker镜像传入虚拟机root目录
查看是否上传成功
安装docker镜像并启动docker
yum install docker-ce-18.06.0.ce-3.el7.x86_64.rpm -y //安装docker镜像
[root@localhost ~]# systemctl start docker //启动docker
[root@localhost ~]# system status docker //查看docker状态
[root@localhost ~]# docker info //查看docker信息
这里我们可以看出我们的容器、镜像数都为0,因为这里没有配置,所以个数为0
进入[root@localhost ~]# vi /etc/docker/daemon.json
编辑文本,配置镜像加速器
{
"registry-mirrors": ["https://w2plr83n.mirror.aliyuncs.com"]
}
systemctl daemon-reload // 刷新守护进程
systemctl restart docker //重启docker
docker info // 效验配置是否成功
[root@localhost ~]# docker search mysql //搜索镜像
name:镜像名字
description:镜像描述
stars:镜像的点赞率
official:官方
automated:自动构建
docker pull mysql //下载镜像
docker images //列举本地仓库的所有镜像
在下载mysql镜像时,如果在docker pull mysql
命令后不加版本号的话,默认的是下载最新版本的mysql镜像,如果需要下载其他版本的镜像可在其后面docker pull mysql:版本号
这里使用XFTP上传centos7.tar和mysql.tar镜像到虚拟机并将镜像导入
docker load -i mysql.tar //导入mysql镜像
docker load -i centos7.tar //导入centos7镜像
[root@localhost ~]# docker images //查看所有镜像信息
如果之前没有安装过mysql,这里可以直接使用下面命令进行安装
docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql -v /mysqldata/mysql/data:/var/lib/mysql -v /mysqldata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
//上面相关命令含义
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为, 3306(主机端口,即外部连接mysql使用的端口号): 3306(容器端口)
--name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=123456:设置当前mysql实例的密码为123456
mysql:latest:需要运行的容器名称以及版本号
通过此处-v 命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动重主机加载到容器当中
由于我之前安装过了mysql导致3306端口被占用导致出现以下错误信息
,所以这里我选择更改mysql默认端口
解决方案:
1、创建mysql容器
docker run -itd --name mysql1 -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 mysql
//-name :容器名字
//-p:端口号为3307
//MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
2、进入容器,进入vim /etc/mysql/my.cnf 修改端口号,修改完成保存并退出
这里如果出现命令错误,那么需要我们安装一个vim文本编辑器
//进入容器
docker exec -it mysql80 /bin/bash
//安装vim,必须先update在install
apt-get update
apt-get install vim
//修改端口号:port=3307
vim /etc/mysql/my.cnf
3、先将 my.cnf 复制到宿主机修改,修改完成再复制进容器
命令说明
mysql1: 容器名
/etc/mysql/my.cnf:容器中 my.cnf路径
/root:my.cnf在宿主机保存路径
docker cp mysql1t:/etc/mysql/my.cn
4、vim my.cnf 进入文件修改或添加端口号,将端口号改为3307
5、将文件重新复制进容器,然后重启容器
docker cp /root/my.cnf mysql1:/etc/mysql/ //将文件重新复制进容器
docker restart mysql1 //重启容器
6、进入容器在容器中连接数据库,查看我们端口是否修改成功
[root@localhost ~]# docker exec -it mysql1 bash //进入容器
root@5a84febd725a:/# mysql -u root -p //在容器中连接数据库
mysql> show global variables like 'port'; //查看端口是否修改成功
错误信息
:这时候我们去连Navicat发现连接不上
解决办法:
查看用户表里面的主机Host是否为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码,这里我发现都踩了雷,所以我猜想是不是应该是这里出了问题
mysql> select host,user,plugin,authentication_string from mysql.user; //查看用户表和主机表
这里我将主机更改为%并且把加密方式改变为mysql_native_password. :
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
更新user为root,host为% 的密码为123456