深入MySQL--基于Docker容器虚拟化的MySQL部署实战

本帖最后由 lee 于 2020-9-7 21:37 编辑

容器云的概念现在很火,现在很多公司都把MySQL部署在容器上,开始今天内容之前,我们先来看看容器云的概念吧。

1.容器云是什么?

要理解容器云的概念,首先需要了解容器,容器的介绍过程中,需要引入虚拟机来进行对比。
虚拟机:
    VMware或者Virtual BoX这种虚拟机想必大家在日常工作中都有用到过,它是模拟计算机操作系统的软件,你可以在windows计算机上安装Virtual BoX软件,然后在Virtual Box上安装Centos或者Ubuntu这种Linux操作系统,从而在一台机器上运行多种类型的多个操作系统,让我们开发测试工作变得很方便。
虚拟机的缺点是需要消耗大量资源,每个虚拟机都需要单独分配内存和磁盘空间,还要消耗CPU资源以及很多底层硬件资源,如果你只是在上面用程序跑了一个hello world,那么会造成资源的大量浪费。

容器:
      容器的出现,就是为了解决这个问题,它是一种更加轻量,更加灵活的虚拟化处理技术,它将一个应用程序所需要的所有资源打包在一起,包含应用程序的code源码、依赖库以及操作系统,这让应用程序在任何地方都可以轻易的运行,不再受到环境的制约。
    和虚拟机相比,容器更加轻量、可移植性更好、成本更低,更高效。

容器云可以理解为云上的容器技术服务。

2.docker简介
  docker是一个开源的应用容器引擎,我们可以将它理解为一个工具,它基于go语言开发,并且兼容apache2.0协议,它可以将应用程序及其依赖(如配置文件等)打包到容器中。

   除此之外,它兼容多种环境,可以被部署在在笔记本电脑,内部服务器,公共云或私有云,可移植性很好,部署也非常灵活,解决了多种环境下的兼容性问题。
Docker 包括三个基本概念:
镜像(Image)
容器(Container)
仓库(Repository)

e9f9538ccaf019b0ce82d022cd12f033.jpg

这三部分组成了Docker的整个生命周期,如上图所示。
docker镜像包含了文件系统,类似于虚拟机的镜像,它是只读的模板。
docker容器是由镜像实例化而来的,这和我们学习的面向对象的概念十分相似,我们可以把镜像想象成类,把容器想象成类经过实例化后的对象,这样就非常好理解镜像和容器的关系了。
docker仓库:类似与代码仓库,是Docker集中存放镜像文件的场所
这个关系可以更加清楚的表述为:

5491e74b190978ea9994170239b5b3b5.jpg

下面我们来看docker的安装:
1、安装所需要的软件包,其中yum-utils 提供了 yum-config-manager  ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2

  1. yum install -y  yum-utils
  2. yum install -y  device-mapper-persistent-data
  3. yum install -y  lvm2
复制代码


2、设置稳定的docker仓库
  1. yum-config-manager \
  2.     --add-repo \
  3.     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码


3、安装Docker Engine-Community
  1. yum install docker-ce docker-ce-cli cotainerd.io
复制代码


此时,Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。
3.使用docker安装MySQL

   使用docker安装mysql服务非常简单,总体步骤就下面几步:
1、下载MySQL镜像
可以登录到docker的官方仓库中寻找mysql的镜像,网址如下:https://hub.docker.com/_/mysql?tab=tags
也可以直接使用docker的命令去下载MySQL镜像

  1. yum pull mysql:5.7.30
复制代码


上面的命令表示我们要下载MySQL5.7.30的镜像。如果我们不写最后的版本号,则默认拉取最新的MySQL版本镜像

2、启动MySQL。
拉取完毕之后,我们可以通过下面的命令来启动MySQL实例:

  1. docker run -itd --name mysql_5730 -p 3306:3306  -e MYSQL_ROOT_PASSWORD=yeyazhou mysql_5730
复制代码


其中:
-i:以交互模式运行容器
-t:为容器重新分配一个伪输入终端
-d:后台运行容器
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=yeyazhou:设置 MySQL 服务 root 用户的密码。

3、查看容器的运行状态

  1. docker ps
  2. CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
  3. 34ssdf8as4ertyc       mysql:5.7.30        "docker-entrypoint.s…"   24 hours ago        Up 24 hours         0.0.0.0:3306->3306/tcp   mysql_5730
复制代码


container id:容器的id号
其他信息包括容器的源镜像,创建时间,状态,端口映射信息,容器名字等。

4、进入容器查看
首先我们使用命令进入容器的交互式命令行:

  1. docker exec -it mysql_5716 /bin/bash
复制代码

游客,如果您要查看本帖隐藏内容请回复
标签: 暂无标签
lee

写了 77 篇文章,拥有财富 653,被 13 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P3 | 发表于 2021-8-20 15:36:55
学习学习
回复

使用道具

P3 | 发表于 2021-9-7 22:17:28
刚好在学习这一块,非常感谢
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈