Docker,让数据库部署完成在弹指一挥间

作者   郭旭瑞·沃趣科技产品专家

出品   沃趣科技

容器技术并非Docker的创新,容器技术所依赖的一些基础技术,如namespace、cgroup、chroot等等,也都不是Docker的首创。

Docker之所以流行,很大程度上取决于它提出的镜像(image)的概念。Docker通过其镜像的概念,重新定义了云时代的应用程序分发方式。

Docker让软件开发过程中的环境构建变得简单,消除软件测试过程中环境不一致导致的问题,又让运维和部署变得轻松快速。

从Docker的logo就可以看出:容器就是集装箱,我们的程序都被打包在集装箱里;Docker就是搬运工,帮你把打包好的应用运输到世界各地,随处运行。

《翻过那座山,就能看见海 | Kubernetes让DBA更优雅地管理数据库》一文中,我们探讨过:数据库的部署过程中,依赖包、内核参数、用户与组、目录等等一系列前置条件都需要DBA人工或脚本方式进行操作,以及后续的数据库软件安装、数据库创建等工作,造成了大量重复性无意义的时间、精力消耗。Docker的镜像便是将这所有的一切配置进行打包,一个镜像就是一个容易分发的即启即用的应用,与数据库结合后一个镜像就是一个迅速部署、即启即用的数据库。

沃趣科技紧跟时代发展浪潮,将容器技术融入到数据库全生命周期管理,打造容器化云数据库RDS产品,同时也积极回馈社区,贡献我们在容器化数据库建设中的诸多经验。本文将公开我们制作的Oracle Database 11.2.0.4.0版本的Docker镜像。

Oracle官方在Github上提供了一些Oracle Docker image,但并未提供11g R2版本。考虑到目前仍有大量用户使用11g R2,所以,我们参考官方12.1版本image制作了11.2.0.4.0版本的image,并且在其基础上做了进一步丰富和标准化,包括:

  • 指定是否开启归档
  • 指定SGA及PGA大小(官方image指定的是固定的内存大小,如需修改,需要在数据库创建之后手动调整,所以,在此我们做了相应的自动化)
  • 指定数据库角色,包括primary及standby(官方镜像只能创建primary数据库,我们同时实现了创建standby数据库的逻辑,但该部分逻辑依赖沃趣科技QCFS云存储提供的快照功能,目前只能在QFusion 3.0 RDS数据库云平台中实现)
  • 包含对主库实例状态、备库实例状态和MRP恢复状态的健康检查
  • ONLINE REDO LOG自动调整为1G大小避免日志切换过于频繁
  • 设置用户名密码永不过期(虽不安全,但在绝大部分企业级用户均采用此实践)
  • 关闭Concurrent Statistics Gathering功能
  • TEMP表空间设置为30G大小
  • SYSTEM表空间设置为1G大小
  • SYSAUX表空间设置为1G大小
  • UNDO表空间设置为10G大小

 Image下载:

docker pull registry.cn-hangzhou.aliyuncs.com/woqutech/oracle-database-11.2.0.4.0-ee

Image使用举例:

创建数据库存储路径:
mkdir -p /data/oracledb
启动Oracle数据库容器:
docker run -d --name oracledb \
-p 1521:1521 \
-e ORACLE_SID=oracledb \
-e ORACLE_PWD=oracle \
-e ORACLE_CHARACTERSET=ZHS16GBK \
-e SGA_SIZE=8G \
-e PGA_SIZE=8G \
-e DB_ROLE=primary \
-e ENABLE_ARCH=true \
-v /data/oracledb:/opt/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/woqutech/oracle-database-11.2.0.4.0-ee
接下来就可以通过1521端口访问数据库啦!Enjoy it!

PS:目前提供的社区版Image只能设置DB_ROLE为primary,standby尚不提供支持。该镜像的Dockerfile我们放在Github上,请持续关注本项目。

项目链接:  https://github.com/woqutech/docker-images/tree/master/Oracle/11.2.0.4

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏aCloudDeveloper

CPU 虚拟化

前面 虚拟化技术总览 中从虚拟平台 VMM 的角度,将虚拟化分为 Hypervisor 模型和宿主模型,如果根据虚拟的对象(资源类型)来划分,虚拟化又可以分为计...

34360
来自专栏云计算D1net

八种最常见Docker开发模式 别说你还不知道

Docker已迅速成为本人最喜欢的基础工具之一,以便构建可重复软件产品,从而带来尽可能静态的服务器环境。   我在本文中将概述我在使用Docker的过程中开始...

35860
来自专栏北京马哥教育

CentOS 7.0.1406 正式版发布

美国当地时间2014年7月7日 17:39:42,CentOS官方放出CentOS7.0.140 64位的版本下载地址,主要更新:内核更新至 3.10.0、支持...

37160
来自专栏大魏分享(微信公众号:david-share)

一个优秀的镜像仓库是什么样的?

33530

将基于MicroProfile的应用程序部署到IBM Cloud Private上

Eclipse MicroProfile是一个用于优化微型服务体系结构的企业级Java的开源项目。基于MicroProfile的应用程序可以部署到Kuberne...

28390
来自专栏JasonhavenDai

Docker初尝试1.What is Docker?2.Try It3.Use It

1.What is Docker? 关于Docker,网上有很多讲解,不在此处赘述,提供两个不错的学习链接,望自行学习。 Docker Github Do...

30250
来自专栏FreeBuf

如何使用树莓派自制网络监视器

本文所介绍的工具适合家庭环境下的“黑盒测试”,它可以帮助你记录网络中发生的所有事情。你可以用它来检测网络威胁,或将数据提供给相关专家来进行网络取证分析。 ? 如...

80850
来自专栏Debian社区

在 Debian Stretch 上安装 FFmpeg

FFmpeg 是一款流行的多媒体框架,可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化...

27340
来自专栏宝哥的专栏

Docker系列学习文章 - 镜像仓库的介绍(七)

| 导语 前面我们讲了镜像的制作,知道了镜像是怎么生成的。但是镜像制作好了后,要怎么管理?他们存在哪里。通过本篇文章的讲解,大家就清楚了。

2.4K180
来自专栏农夫安全

摸金某系统通用上传漏洞

前言 该教务管理系统是一个面向学院各部门以及各层次用户的多模块综合信息管理系,能够满足从学生入学到毕业全过程及教务管理各个环节的管理需要。 ? ? 漏洞介绍 该...

44390

扫码关注云+社区

领取腾讯云代金券