杨建荣的学习笔记|MySQL与容器

文章转载自MySQL解决方案工程师 , 作者徐轶韬
最近经常被问到 , MySQL可以适用于容器吗?在这一篇里 , 简单地为大家介绍一下MySQL在容器上的使用 。
既然说到了容器 , 首先介绍一下关于容器的相关内容 。
什么是容器?让我们看一下官网上怎么说 , https://www.docker.com/resources/what-container
“Acontainerisastandardunitofsoftwarethatpackagesupcodeandallitsdependenciessotheapplicationrunsquicklyandreliablyfromonecomputingenvironmenttoanother.ADockercontainerimageisalightweight,standalone,executablepackageofsoftwarethatincludeseverythingneededtorunanapplication:code,runtime,systemtools,systemlibrariesandsettings.”
翻译过来的内容是“容器是软件的标准单元 , 它将代码及其所有依赖项打包 , 以便应用程序在不同的计算环境之间快速可靠地运行 。 Docker容器映像是一个轻量级的、独立的、可执行的软件包 , 它包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置” 。 概述一下 , 用红颜色标识出来的字便是容器的特征 。 容器和虚拟机具有类似的资源隔离和分配优势 , 但功能不同 , 容器虚拟化的是操作系统而不是硬件 。 容器更轻便 , 更高效 。 Docker是实现容器技术的一个开源项目 , 它将程序以及程序所有的依赖都打包到Docker容器里面 。 使用Docker的好处之一 , 可以避免“明明在我这里好用 , 为什么在你那里不好用” , 这个画面开发的小伙伴和测试的小伙伴可以脑补一下 。
使用Docker时 , 需要用到Docker镜像 。 镜像可以从正式的镜像库下载 , 也可以人工制作和更新 。
MySQL的镜像可以从https://hub.docker.com/下载 , 这里面既有社区版MySQL的镜像 , 也有企业版MySQL的镜像 。 另外 , 也可以从https://container-registry.oracle.com下载两个版本 。
部署MySQL时 , 可以参照下面的步骤:
安装Docker服务 。
下载Docker镜像:
dockerpullmysql
【杨建荣的学习笔记|MySQL与容器】启动Docker容器:
dockerrun--name=mysqlse-eMYSQL_RANDOM_ROOT_PASSWORD=true-eMYSQL_ONETIME_PASSWORD=true-dmysql:latest
查看运行的容器:
dockerps
查看日志 , 确认生成的root密码:
dockerlogsmysqlse
连接MySQL服务器:
dockerexec-itmysqlsemysql-uroot-p
将配置文件和数据目录从底层主机系统映射到容器:
dockerrun--name=mysqlse-eMYSQL_RANDOM_ROOT_PASSWORD=true-v[pathonhostmachine]/my.cnf:/etc/my.cnf-v[pathonhostmachine]/datadir:/var/lib/mysql-dmysql:latest
关于详细的安装方法可以参照:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html
让我们考虑下一个问题 , 如果使用了成百上千的容器 , 该怎样管理呢?我们需要一个管理系统来帮助创建和部署复杂的环境 。 现在有很多这样的项目帮助我们实现这一点 , 例如:Kubernetes,Swarm,Rancher,DockerCompose,... 。
以Kubernetes为例 , Kubernetes是一个开源项目 , 允许将容器化的应用程序部署到集群 , 并且能够控制它们 。 Kubernetes是最活跃的容器编排项目 , 它使用客户端服务器(C/S)的架构 , 能够用于包括Docker在内的容器 。
简单介绍一下Kubernetes的几个概念:
Node:容器运行的地方
Pods:共享存储和网络的一组容器
高可用:当Node或Pod不可用时 , Kubernetes将Pod安置到其他可用的Node
能够直接下载Docker镜像
资源控制包括网络和存储
可以和其他项目整合提供存储网络等
MySQL提供了一个用于Kubernetes的MySQLOperatorforKubernetes , 目前还是一个实验室版本 , 它可以安装在现有的Kubernetes集群内 , 用户能够使用简单的配置格式创建和管理MySQL集群 。 这个项目一开始是为了帮助内部团队更容易地在Kubernetes中运行MySQL , 但很快就发现很多其他用户可能也面临着类似的问题 , 因此也将其开源提供给广大用户使用 。 https://github.com/oracle/mysql-operator


推荐阅读