diff --git a/media/ob-docker-overview/docker-ydbd.png b/media/ob-docker-overview/docker-ydbd.png new file mode 100644 index 0000000000000000000000000000000000000000..9452f99cc018d3c240975480004eeeaab2254df4 Binary files /dev/null and b/media/ob-docker-overview/docker-ydbd.png differ diff --git a/media/ob-docker-overview/ob-docker-homepage.png b/media/ob-docker-overview/ob-docker-homepage.png new file mode 100644 index 0000000000000000000000000000000000000000..b681ada8aba50cd093f9f427901aee09087d3f1e Binary files /dev/null and b/media/ob-docker-overview/ob-docker-homepage.png differ diff --git "a/\345\256\211\350\243\205\351\203\250\347\275\262-OB\347\244\276\345\214\272\347\211\210Docker\351\225\234\345\203\217\345\255\230\345\234\250\347\232\204\345\277\205\350\246\201\346\200\247.md" "b/\345\256\211\350\243\205\351\203\250\347\275\262-OB\347\244\276\345\214\272\347\211\210Docker\351\225\234\345\203\217\345\255\230\345\234\250\347\232\204\345\277\205\350\246\201\346\200\247.md" new file mode 100644 index 0000000000000000000000000000000000000000..27245199f01d3534ff19035d72811311f44e8818 --- /dev/null +++ "b/\345\256\211\350\243\205\351\203\250\347\275\262-OB\347\244\276\345\214\272\347\211\210Docker\351\225\234\345\203\217\345\255\230\345\234\250\347\232\204\345\277\205\350\246\201\346\200\247.md" @@ -0,0 +1,76 @@ +今天的文章来聊一个轻松点的话题:OceanBase 提供 Docker 镜像的必要性 >_< 。 + +Docker 本身火的不要不要的,这个大家也都知道,那么数据库做个 Docker,真的有必要这么麻烦吗?我还记得 2017 年的时候调研容器数据库,当时觉得弄这个还挺麻烦的,当然,也有可能是我水平不行嘿嘿。 + +好了,回到今天的主题,OceanBase 为什么要提供 Docker 镜像呢?而且 **OB 的这个 Docker 镜像可以说是很有诚意,每次新版本发布,Docker 镜像都会在第一时间发布更新**。 + +下面带着这个疑问,让我们来回顾一下 OB Docker 的安装部署过程。 + +# 1. 安装部署尝鲜 + +**首先呢**,Docker 支持很多平台,包括Windows、Linux、MacOS等,对多平台的支持,让我们可以迅速在当前环境拉起一个测试容器。 + +通过查看网站:https://hub.docker.com/u/oceanbase 上的状态信息,我们可以获知到近期是否有更新存在,比如下图展示了几天前发布的 OceanBase CE 3.1.4 版本。 + +![](./media/ob-docker-overview/ob-docker-homepage.png) + +**然后呢**,根据我们获知的这个信息,我们可以点击该镜像,进入到详情页面根据导航一步步操作。大体的步骤总结如下: + +- 在一切开始之前,您需要自行安装对应平台的 Docker 软件,这里我们不展开介绍 +- 直接执行命令拉取 OB Docker 镜像:`docker pull oceanbase/oceanbase-ce` +- 执行命令部署集群,并尝试登陆: + - `docker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce` + - `docker exec -it obstandalone ob-mysql sys` + +通过上面的几个简单的操作,我们就能把一个单机 OB 拉起来了,应付一些简单的体验和开发工作绰绰有余。如果大家想真正操作一遍,请仔细阅读 https://hub.docker.com/r/oceanbase/oceanbase-ce 部分,提前调整好 Docker 服务的资源较为重要。 + +## 知识点 + +经过第一章节的快速演示以后,大家是不是对 Docker 镜像的必要性也有所认识了?OceanBase 的 Docker 镜像,可以说是最简单的 OB 入门方法了。我**大体总结了以下几个必要性**: + +- OceanBase 集群本身对资源要求稍高,在笔记本等环境中通过虚拟机部署较为困难; +- OceanBase 集群上手有一定难度,常常存在初始化报错并劝退的可能性; +- 集群性软件各个组件较多,部署步骤较为繁琐; +- OceanBase 社区版当前仅支持在 Linux 上物理部署;对 Windows 和 MacOS 等系统还不支持; +- 总结起来无非就是两点,“时间成本” 和 “学习成本” 比较高。 + +为了解决这几个问题,OB 团队一直在想办法优化集群服务启动对资源的消耗。当然当前来看,通过单机 Docker 来解决以上问题,属于最简单快捷的方案了,**无需配置,两条命令启动一个 OB 环境**。 + +# 2. 灵活性问题 + +上面第一部分也提到了,通过 OB Docker,可以让您在自己的 Windows 或 MacOS 电脑上直接体验 OB,而不必担心本地无法部署二进制的问题。下面我们展开来看看 Docker 带来的其他灵活性优势: + +**在 OB 的 Docker 主页上,我们首先看到了如下两种部署方式:** + +```shell +# 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 镜像为我们提前封装好了测试脚本,我们可以通过一条命令体验性能测试的快感:** + +```shell +docker exec -it obstandalone obd test sysbench obcluster +``` + +## 知识点 + +通过第二节介绍的两个例子,一个常见的资源控制场景,一个常见的测试体验场景,我们可以获知,通过 Docker 镜像的方式提供 OB 集群,可以灵活的进行部署和测试、甚至“反悔成本比较低”,几分钟就可以重置一套集群。如果您是刚入门,想玩玩,是不是这种方式很方便? + +# 3. 及时性问题 + +说到及时性,这一点应该与 Docker 更新的低成本和快捷相关,就像刚开篇时我说到的,OB CE 3.1.4 版本刚发布的时候,就会第一时间更新 Docker 镜像。我之前也不止一次分享过 Docker 尝鲜的过程,很丝滑。所以说采用 Docker 的方式,还真的是挺方便的。 + +说个极端的场景,如果 OB 发布了新版本,我们总不能把生产或测试环境直接更新了吧,用的好好的,能不动就不动的基本原则还是最有效的。 +![](./media/ob-docker-overview/docker-ydbd.png) + +所以如果想最及时的尝鲜新版本,可以先从 Docker 开始~ + +**如果您对 OB 提供的 Docker 镜像还有别的想法,欢迎留言讨论,说出您心里认为重要的点。** + +