上一篇把docker准备好了,今天补补知识,什么是docker,docker能做什么,然后开始我们mysql的安装
什么是docker
它是开源的,轻量级的容器技术,容器技术现在已经是当下热门的话题,懂maven的小伙伴,也它可以把docker理解为maven,maven提供了你所需要的jar,docker提供了你所需要的安装软件比如mysql,tomcat,redis等,还可以理解为2000年左右我们装系统的ghost文件盘,里边包含着我们需要的软件包。
docker能做什么
它能很简单的安装我们需要的软件包,比如mysql,tomcat,redis等,以及软件包的启动和停止
docker的一些概念
- docker主机
安装docker的机器,称为docker主机,比如上一篇提到的centos,
- docker客户端
连接docker主机的终端
- docker仓库
和maven一样,它保存着我们需要的镜像文件
- docker镜像
存放在docker仓库的镜像软件,比如mysql,tomcat,redis等等
- docker容器
用docker启动后的一个容器,称为docker容器,是独立运行的一个或一组应用
docker安装mysql
接下来,我们开始安装mysql数据库,首先我们去docker的仓库,找到mysql镜像,使用docker运行这个镜像,然后生成mysql容器,对容器的启动和停止就是对mysql的启动和停止。
- 去docker仓库搜索mysql镜像,执行下边命令
# docker search mysql
这里保证docker是启动的,没有启动的话,执行下边命令
# systemctl start docker
执行结果,实际就是去docker hub里找,也可以使用https://hub.docker.com/里边搜索,效果是一样的
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 9440 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3401 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 691 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 75
略...
这里NAME就是镜像的名字,DESCRIPTION就是对镜像的描述,STARS是对这个镜像关注的人,OFFICIAL是这个镜像是否是官方提供,AUTOMATED是是否自动运行
2.拉取镜像
# docker pull mysql
docker pull是固定命令,mysql是上边的NAME,也可以指定版本,只指定mysql的话相当于mysql:latest
如果想下载mysql5的版本的话,用以下的命令
docker pull mysql:5.7
这里可以去官网https://hub.docker.com/_/mysql?tab=tags找到自己想下载的版本,并且官方还提供了对应的命令
在拉取镜像时,也许会碰到下边的错误,参照下边解决方法的网页,原因就是拉取镜像的ip不可用,找到可用的ip,并且在虚拟机中修改hosts文件
错误信息
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解决方法
安装成功的话,会出现下边信息
Using default tag: latest
latest: Pulling from library/mysql
54fec2fa59d0: Pull complete
bcc6c6145912: Pull complete
951c3d959c9d: Pull complete
05de4d0e206e: Pull complete
319f0394ef42: Pull complete
d9185034607b: Pull complete
013a9c64dadc: Pull complete
42f3f7d10903: Pull complete
c4a3851d9207: Pull complete
82a1cc65c182: Pull complete
a0a6b01efa55: Pull complete
bca5ce71f9ea: Pull complete
Digest: sha256:61a2a33f4b8b4bc93b7b6b9e65e64044aaec594809f818aeffbff69a893d1944
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
3.查看拉取的镜像
# docker images
执行结果,说明拉取成功
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest a7a67c95e831 3 days ago 541MB
4.如果想删除镜像使用
# docker rml a7a67c95e831
这里的a7a67c95e831就是3的IMAGE ID
5.启动mysql
# docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7几个参数项说明一下
-p是将docker的端口映射到虚拟机的端口
-e是指定参数项,
-d是后台启动
--是指定参数
6.查看是否成功
# docker ps -a
出现下边的信息,并且STATUS是UP,不是Exited
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3fc55ac83e5 mysql "docker-entrypoint.s…" 47 seconds ago Up 46 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql01
这个时候拿客户端去连接mysql的,应该是成功的
7.停止mysql
# docker stop e3fc55ac83e5
这里e3fc55ac83e5就是使用docker ps -a查看的容器id
8.删除mysql镜像的话
# docker rm e3fc55ac83e5
这里e3fc55ac83e5就是使用docker ps -a查看的容器id
9.查看mysql在docker中启动日志
# docker logs e3fc55ac83e5
这里e3fc55ac83e5就是使用docker ps -a查看的容器id
安装过程中可能出现的错误以及解决方法
- 上边提到过的在拉取镜像时,也许会碰到下边的错误,参照下边解决方法的网页,原因就是拉取镜像的ip不可用,找到可用的ip,并且在虚拟机中修改hosts文件
错误信息
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解决方法
- 在启动docker的mysql时一定要指定密码,否则会出现下边的错误信息
错误信息
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
解决方法
启动时要指定-e MYSQL_ROOT_PASSWORD
# docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- 用客户端连接mysql会出现下边的错误信息1
错误信息
Client does not support authentication protocol requested by server
解决方法
https://blog.csdn.net/hello_world_qwp/article/details/81155136
- 用客户端连接mysql会出现下边的错误信息2
错误信息
socket error code 10057
解决方法
查看vi /etc/my.cnf
找到socket=/var/lib/mysql/mysql.sock
看看/var/lib/mysql/mysql.sock存不存在,不存在的话,创建这个文件,然后重启mysql
大家想用docker安装mysql,按照这个这个步骤应该可以安装成功,有什么和实际操作不一样的地方,欢迎你的留言我们交流,共同进步。