今天的文章来聊一个轻松点的话题:OceanBase 提供 Docker 镜像的必要性 >_< 。
Docker 本身火的不要不要的,这个大家也都知道,那么数据库做个 Docker,真的有必要这么麻烦吗?我还记得 2017 年的时候调研容器数据库,当时觉得弄这个还挺麻烦的,当然,也有可能是我水平不行嘿嘿。
好了,回到今天的主题,OceanBase 为什么要提供 Docker 镜像呢?而且 OB 的这个 Docker 镜像可以说是很有诚意,每次新版本发布,Docker 镜像都会在第一时间发布更新。
下面带着这个疑问,让我们来回顾一下 OB Docker 的安装部署过程。
首先呢,Docker 支持很多平台,包括Windows、Linux、MacOS等,对多平台的支持,让我们可以迅速在当前环境拉起一个测试容器。
通过查看网站:https://hub.docker.com/u/oceanbase 上的状态信息,我们可以获知到近期是否有更新存在,比如下图展示了几天前发布的 OceanBase CE 3.1.4 版本。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5G2XshV-1661341432928)(./media/ob-docker-overview/ob-docker-homepage.png)]](https://1000bd.com/contentImg/2023/10/25/105630095.png)
然后呢,根据我们获知的这个信息,我们可以点击该镜像,进入到详情页面根据导航一步步操作。大体的步骤总结如下:
docker pull oceanbase/oceanbase-cedocker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-cedocker exec -it obstandalone ob-mysql sys通过上面的几个简单的操作,我们就能把一个单机 OB 拉起来了,应付一些简单的体验和开发工作绰绰有余。如果大家想真正操作一遍,请仔细阅读 https://hub.docker.com/r/oceanbase/oceanbase-ce 部分,提前调整好 Docker 服务的资源较为重要。
经过第一章节的快速演示以后,大家是不是对 Docker 镜像的必要性也有所认识了?OceanBase 的 Docker 镜像,可以说是最简单的 OB 入门方法了。我大体总结了以下几个必要性:
为了解决这几个问题,OB 团队一直在想办法优化集群服务启动对资源的消耗。当然当前来看,通过单机 Docker 来解决以上问题,属于最简单快捷的方案了,无需配置,两条命令启动一个 OB 环境。
上面第一部分也提到了,通过 OB Docker,可以让您在自己的 Windows 或 MacOS 电脑上直接体验 OB,而不必担心本地无法部署二进制的问题。下面我们展开来看看 Docker 带来的其他灵活性优势:
在 OB 的 Docker 主页上,我们首先看到了如下两种部署方式:
# deploy an instance of the largest size according to the current container
docker run -p 2881:2881 --name obstandalone -d oceanbase/oceanbase-ce
# deploy mini standalone instance
docker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce
第一种部署方式是根据当前容器的配置,部署一个资源最大化的 OB 实例;第二种部署方式是以较少的资源部署一个 OB 实例。这就是 Docker 带来的优势,灵活的资源控制。如果您愿意,也可以较快速的在两种模式间,通过 Docker 进行切换。
其次呢,Docker 镜像为我们提前封装好了测试脚本,我们可以通过一条命令体验性能测试的快感:
docker exec -it obstandalone obd test sysbench obcluster
通过第二节介绍的两个例子,一个常见的资源控制场景,一个常见的测试体验场景,我们可以获知,通过 Docker 镜像的方式提供 OB 集群,可以灵活的进行部署和测试、甚至“反悔成本比较低”,几分钟就可以重置一套集群。如果您是刚入门,想玩玩,是不是这种方式很方便?
说到及时性,这一点应该与 Docker 更新的低成本和快捷相关,就像刚开篇时我说到的,OB CE 3.1.4 版本刚发布的时候,就会第一时间更新 Docker 镜像。我之前也不止一次分享过 Docker 尝鲜的过程,很丝滑。所以说采用 Docker 的方式,还真的是挺方便的。
说个极端的场景,如果 OB 发布了新版本,我们总不能把生产或测试环境直接更新了吧,用的好好的,能不动就不动的基本原则还是最有效的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z1Ix4I1U-1661341432929)(./media/ob-docker-overview/docker-ydbd.png)]](https://1000bd.com/contentImg/2023/10/25/105630177.png)
所以如果想最及时的尝鲜新版本,可以先从 Docker 开始~
如果您对 OB 提供的 Docker 镜像还有别的想法,欢迎留言讨论,说出您心里认为重要的点。