docker- 构建 oracle2c-r2(12.2.0.1) 的镜像

 

需求

由于公司的数据库需要使用新的oracle版本(12c-r2 -->12.2.0.1),从之前的oracle11g迁移到12c。所以,便有了我们今天的内容。

首先,我们就先来介绍一下如何构建oracle12c的镜像(docker image)。

如果大家有使用的需求而又不是正式的项目,可以直接到docker hub 上面 pull 一个别人家的。在这里附上链接:https://hub.docker.com/r/mritschel/oracle12cr2_base/

PS.这个真的不是广告啊,我本来也是想这么搞得,毕竟不用重复造轮子么。。。无奈是公司的项目需求,不能使用第三方的,所以就只能自己构建吧。。。

准备

准备工作主要分为两部分:

part1

需要下载oracle相关的东东,例如安装文件,dockerfile。这些都可以从oracle 的github 上面找到。https://github.com/oracle/docker-images/tree/master/OracleDatabase

下载完成以后,新建一个目录,我这里是/oracle12c,把dockerfile(其实是一个shell脚本buildDockerImage.sh)放到里面:

然后再在这个目录下创建一个子目录,我这里是/oracle12c/12.2.0.1; 最后再把下载的oracle12c-r2的安装包和从GitHub上面下载的相关文件统统放到里面。类似下图:

Part2

在这里还需要强调一点,由于Oracle12c需要container的空间 大于默认值(10g),因此我们需要为container扩容。请注意:只有 Storage Driver = devicemapper 的文件存储格式才支持扩容。由于我这里环境是centos7,且安装的docker版本是1.13,而且文件存储格式是devicemapper, 所以可以按照下面方法对container进行扩容。。。貌似最新的docker17.03采用的是 “overlay2”的文件存储格式,也许可以省略这一步。

solution1 - 启动docker daemon时设定参数

# dockerd --storage-opt dm.basesize=30G

solution2 - 修改配置文件 "/etc/sysconfig/docker-storage"

# vi /etc/sysconfig/docker-storage

修改参数为:DOCKER_STORAGE_OPTIONS=--storage-opt dm.basesize=30G

到这里,我们的准备工作就完成了。

开始构建

构建工作相对简单,只是需要运行dockerfile即可。由于构建的过程中需要在线下载和安装一些组件,此时需要保证网络畅通。

 

完成构建

完成构建之后,我们可以看到oracle12c-r2的docker image 已经存在于本地:

运行镜像

# docker run -it --name ora12c-r2 -p 1521:1521 -p 5500:5500 -e ORACLE_SID=xxx -e ORACLE_PDB=xxx -e ORACLE_PWD=xxx -e ORACLE_CHARACTERSET=AL32UTF8 -v /DATA/oracle_12c/sharedData:/opt/oracle/oradata oracle/database:12.2.0.1-se2

这里贴出命令行参数:

Parameters:
--name: The name of the container (default: auto generated)
-p: The port mapping of the host port to the container port.
Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)
-e ORACLE_SID: The Oracle Database SID that should be used (default: ORCLCDB)
-e ORACLE_PDB: The Oracle Database PDB name that should be used (default: ORCLPDB1)
-e ORACLE_PWD: The Oracle Database SYS, SYSTEM and PDB_ADMIN password (default: auto generated)
-e ORACLE_CHARACTERSET:
The character set to use when creating the database (default: AL32UTF8)
-v The data volume to use for the database.
Has to be owned by the Unix user "oracle" or set appropriately.
If omitted the database will not be persisted over container recreation.

第一次运行容器是,会根据我们的指令进行初始化操作,例如安装oracle instance, 启动服务等等。。。直到我们看到

#########################
DATABASE IS READY TO USE!
########################

我们的oracle12c-r2数据库就创建完成。

进入运行的container,连接数据库:

# docker exec -it ora12c-r2 /bin/bash
# sqlplus sys/<your password>@//localhost:1521/<your SID> as sysdba

OK, 我们的工作已经完成了,现在我们就可以在本地使用oracle12c-r2啦 :)  最后,感谢大家的观看,欢迎留言交流。。。

参考资料:

https://blogs.oracle.com/developer/creating-an-oracle-database-docker-image

http://www.projectatomic.io/blog/2016/03/daemon_option_basedevicesize/

https://bobcares.com/blog/docker-container-size/

最新文章

  1. 基于Composer Player 模型加载和相关属性设置
  2. C#开发中常用方法3------Cookie的存取
  3. How To Install Java on CentOS and Fedora
  4. Java虚拟机内存管理原理基础入门
  5. BZOJ-1066 蜥蜴 最大流+拆点+超级源超级汇
  6. Mac下安装Tomcat及配置
  7. web.xml 中的listener、 filter、servlet 加载顺序
  8. Servlet &amp; JSP - Decorating Requests and Responses
  9. newlisp 注释生成文档
  10. python setuptools
  11. 从零开始学安全(四)●Vmware CentOS 7 添加静态ip联网
  12. MongoDB - 日常操作二
  13. 20款最好的jQuery文件上传插件
  14. Laravel 5.6 视图用Blade语法传递变量和流程控制if 语句和循环语句
  15. python 枚举Enum类的使用
  16. vuejs2.0 vue实例的生命周期
  17. java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean
  18. MySQL , MHA , Haproxy 配置
  19. golang (4) golang 操作mongdb
  20. 认识HTML中文本、图片、链接标签和路径

热门文章

  1. 解决Win8/8.1无法正确识别USB3.0的问题
  2. Android 撕衣服(刮刮乐游戏)
  3. VMware Windows安装详细过程(详细图解)
  4. msys 中打开系统程序
  5. php 获取数组第一个key 第一个键值对 等等
  6. HDU 1251统计难题 字典树
  7. UIBarButtonItem使用
  8. Android5.0(Lollipop) BLE蓝牙4.0+浅析demo连接(三)
  9. js进阶课程 12-9 jquery的事件对象event的方法有哪些?
  10. 度量空间(metric space)