docker基本概念以及安装mysql

    上一篇把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的启动和停止。

  1. 去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)

解决方法

https://www.cnblogs.com/python-wen/p/11224555.html

    安装成功的话,会出现下边信息

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)

解决方法

https://www.cnblogs.com/python-wen/p/11224555.html

  • 在启动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,按照这个这个步骤应该可以安装成功,有什么和实际操作不一样的地方,欢迎你的留言我们交流,共同进步。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值