MySQL与容器

最近经常被问到,MySQL可以适用于容器吗?在这一篇里,简单地为大家介绍一下MySQL在容器上的使用。

既然说到了容器,首先介绍一下关于容器的相关内容。

什么是容器?让我们看一下官网上怎么说,https://www.docker.com/resources/what-container

“A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.”

翻译过来的内容是“容器是软件的标准单元,它将代码及其所有依赖项打包,以便应用程序在不同的计算环境之间快速可靠地运行。Docker容器映像是一个轻量级的、独立的、可执行的软件包,它包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置”。概述一下,用红颜色标识出来的字便是容器的特征。容器和虚拟机具有类似的资源隔离和分配优势,但功能不同,容器虚拟化的是操作系统而不是硬件。容器更轻便,更高效。Docker是实现容器技术的一个开源项目,它将程序以及程序所有的依赖都打包到Docker容器里面。使用Docker的好处之一,可以避免“明明在我这里好用,为什么在你那里不好用”,这个画面开发的小伙伴和测试的小伙伴可以脑补一下。

使用Docker时,需要用到Docker镜像。镜像可以从正式的镜像库下载,也可以人工制作和更新。

MySQL的镜像可以从 https://hub.docker.com/下载,这里面既有社区版MySQL的镜像,也有企业版MySQL的镜像。另外,也可以从https://container-registry.oracle.com下载两个版本。

部署MySQL时,可以参照下面的步骤:

  1. 安装Docker服务。

  2. 下载Docker镜像:

    docker pull mysql
  3. 启动Docker容器:

    docker run --name=mysqlse -e MYSQL_RANDOM_ROOT_PASSWORD=true -e MYSQL_ONETIME_PASSWORD=true -d mysql:latest
  4. 查看运行的容器:

    docker ps
  5. 查看日志,确认生成的root密码:

    docker logs mysqlse
  6. 连接MySQL服务器:

    docker exec -it mysqlse mysql -uroot -p
  7. 将配置文件和数据目录从底层主机系统映射到容器:

    docker run --name=mysqlse -e MYSQL_RANDOM_ROOT_PASSWORD=true -v [path on host machine]/my.cnf:/etc/my.cnf -v [path on host machine]/datadir:/var/lib/mysql -d mysql:latest

关于详细的安装方法可以参照:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html


让我们考虑下一个问题,如果使用了成百上千的容器,该怎样管理呢?我们需要一个管理系统来帮助创建和部署复杂的环境。现在有很多这样的项目帮助我们实现这一点,例如:Kubernetes,Swarm, Rancher, Docker Compose,...。

以Kubernetes为例,Kubernetes是一个开源项目,允许将容器化的应用程序部署到集群,并且能够控制它们。Kubernetes是最活跃的容器编排项目,它使用客户端服务器(C/S)的架构,能够用于包括Docker在内的容器。

简单介绍一下Kubernetes的几个概念:

  • Node:容器运行的地方

  • Pods:共享存储和网络的一组容器

  • 高可用:当Node或Pod不可用时,Kubernetes将Pod安置到其他可用的Node

  • 能够直接下载Docker镜像

  • 资源控制包括网络和存储

  • 可以和其他项目整合提供存储网络等

MySQL提供了一个用于Kubernetes的 MySQLOperator for Kubernetes,目前还是一个实验室版本,它可以安装在现有的Kubernetes集群内,用户能够使用简单的配置格式创建和管理MySQL集群。这个项目一开始是为了帮助内部团队更容易地在Kubernetes中运行MySQL,但很快就发现很多其他用户可能也面临着类似的问题,因此也将其开源提供给广大用户使用。https://github.com/oracle/mysql-operator

MySQL Operator for Kubernetes可以部署社区版和企业版的MySQL,可以配置管理InnoDB Cluster,当InnoDB Cluster的成员宕机时,MySQL Operator可以自动将其重新加入集群。此外,MySQL Operator还支持备份与恢复。

关于MySQL Operator的详细内容可以参考:https://blogs.oracle.com/developers/introducing-the-oracle-mysql-operator-for-kubernetes

以上内容是关于MySQL与容器的简介,感谢您关注“MySQL解决方案工程师”!


本文分享自微信公众号 - MySQL解决方案工程师(mysqlse)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/4591256/blog/4521278

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。