docker下oracle部署实战

作者简介: 梁向宇  现就职于北京海天起点, 负责分布式数据处理技术研究;8年以上IT从业经验,具有丰富的数据挖掘和项目实战经验,擅长敏捷开发,热爱技术交流,乐于分享。

前言

Docker 是一个开源的容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器,其使用在有网络环境下十分方便。虽docker涉及知识较多,但网络上有十分丰富的资源,一些命令就不在此赘述; 本文着重在离线环境下实际操作docker中部署oracle。

Docker环境选择

Linux only, no windows

Docker原生运行于linux环境下的,可以说跟linux的联系非常紧密,也能最大化发挥其优势;虽然通过docker toolbox可以实现在windows系统的安装,其实质是通过docker machine构造了一个linux虚拟机,这样做有点不够洁癖(原谅我是个有强迫症的程序员),故此本文完全不涉及windows环境。

选择linux 7.x 而非 6.x

在此我们指的是 Red Hat, Oracle Linux, CentOS 这三个系统的版本,docker原生支持7.x;在6.x下安装是一件吃力不讨好的事, 需要升级内核,可能会让系统运行不稳定,维护成本比较高;本文选择CentOS 7.2版本。

Docker部署

在线部署

比较简单省事。。。。

离线部署

需要下面3个RPM安装包:

docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm

docker-ce-17.03.3.ce-1.el7.x86_64.rpm

libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm

官方下载地址:

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

安装命令:

docker从1.13版本之后采用时间线的方式作为版本号,比如17.03.3-ce 表示17年3月份的版本,另外我下载的是17.03.3版本,本文实际环境中所用版本18.06.1, 因为后续oracle镜像构建必须使用 17.09以上的版本,对于普通的使用则无影响。

Docker在运行中会产生较多log文件,故此需要修改docker主目录,相关配置文件为/etc/docker/daemon.json

增加一行: “graph” : “/u01/docker”

另外, registry-mirrors 表示 docker使用加速器,鉴于大陆网络 ‘the great wall’ ; 最好配置一个国内的加速器, 如上,我选用了阿里的docker加速器,下载速度会快很多。

Docker离线部署利器

save

此方式保存完整的镜像, 无法对导入的镜像进行命名,适用基础环境移动

导出镜像:

导入镜像:

export

此方式仅仅保存容器的镜像快照,可以对导入的镜像进行命名,使用定制化环境移动

导出镜像:

导入镜像:

在线环境下部署oracle

搜索docker hub 上的 oracle镜像 :

命令返回结果如下:

我们选取 sath89/oracle-12c 这一个镜像,执行pull操作:

命令返回结果:

执行查看进行命令:

显示已经下载ok, 如下:

下面开始准备启动oracle

添加一个linux用户组 :

添加oracle 用户:

创建数据映射目录:

修改文件所属:

启动oracle:

查看输出日志:

显示创建成功,Ctrl + c 关闭日志;

使用 docker ps 查看运行的容器:

显示 容器ID 为: 8f7f77b01263, 容器name为:oracle12c

执行终端命令,进入系统:

可以访问!

此镜像在docker hub上, 网址为:https://hub.docker.com/r/sath89/oracle-12c/

Oracle连接信息如下:

在生产中我们可能想对oracle做定制化的部署,另外我们也经常会在离线环境部署oracle,下面我们进行离线环境下oracle镜像的构建以及定制化ORACLE数据库。

通过dockerfile构建ORACLE镜像

构建镜像我们可以理解为构造一个安装操作系统所需的 ISO文件;

Oracle镜像的构建比较复杂,所幸,oracle官方在git上提供了甲骨文公司产品的dockerfile文件,网址: https://github.com/oracle/docker-images

把资源下载到本机:

git clone https://github.com/oracle/docker-images.git

查看目录结构

熟悉oracle相关产品的同学可能看着非常眼熟,里面包含了oracle公司几乎所有的产品,本文我们只进行oracle单例的安装测试, 进入到 OracleDatabase目录

有两个目录 RAC 和 SingleInstance

我们进入到目录 SingleInstance/dockerfiles/

目前oracle提供了 11.2 12.1 12.2 18.3 四个版本可以选择, 因为作者本人刚好有12.2的安装包,因此我们选择12.2版本, 把linuxx64_12201_database.zip 文件移动到 12.2.0.1/ 目录中, 如下:

确保 Checksum.ee中的md5值跟实际的文件md5值必须一致:

针对很多同学,希望镜像的名字可以命名, 需改 dockerfiles/ 下的buildDockerImage.sh文件, 如下:

红笔标识出即是你可以自定义的镜像名称,这里是 hthorizon/oracle12201-ee

buildDockerImage.sh 命令解释:

我们选择 12.2.0.1版本的 Enterprise Edition , 执行命令如下:

输出如下:

经过漫长的等待,输出如下界面表示构建成功

构建成功! 总共花费 1596秒, 26分钟。

查看镜像:

启动oracle准备

启动命令:

再次强调: /u01/oracle-data/odasm/data 目录所属用户的uid 务必是 54321,oracle官方就是这样设定的,否则会报错, 原文如下:

启动之后,查看log输出: docker logs -f CONTAINER-ID

创建容器成功:

进入终端:

执行成功(感谢星神提供的支持!)

通过dockerfile构建tomcat镜像

文件准备如下:

编辑Dockerfile

开始构建镜像:

查看镜像是否存在: docker images

从浏览器登陆:

OK, 至此tomcat的镜像构建和启动演示完毕;

对于日常离线部署可以通过 docker export命令很方便的实现。

未经允许不得转载:Oracle一体机用户组 » docker下oracle部署实战

相关推荐