弄了几周,终于把oracle 11g 安装到docker中了,今天就分享哈如何打造属于自己的oracle docker 镜像,特别说明:此镜像安装的是oracle 11g的企业版而非快速版
实际上市面上还是有几个不错的oracle开源镜像,比如说registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g,相关的使用教程文档有很多,使用起来也很方便,大小有6个多g,而我自己的有9个多g,毕竟我不是专业的,能跑起来就不错了,所以服务器空间不是很大的还是不推荐使用我的dockerfile。
另一个我参考的镜像是jaspeen/oracle-11g,这个镜像只有oracle的安装环境,实际上没有安装oracle,它只是把oracle需要的环境给配置好了,只需要运行时指定oracle的安装文件路径即可,我镜像的运行shell文件都是参考的这个镜像的shell文件(不知道作者看到这篇文章会不会告我侵权呢,所以赶紧收藏,以免被删了找不到了),相关使用可以参考链接
话不多说,开始进入正文!!!
1. 我使用的是oraclelinux:7-slim作为基础镜像,这是oracle官方的镜像,下载次数还是很多的,相对安全,应该不会右后门啥的;这个版本选择是参考oracle其他版本的dockerfile文件,用新版本理论上应该是可以的
2. 编写dockerfile,我很不是很精通dockerfile的语法,就使用平常的命令来运行,可以当做借鉴
FROM oraclelinux:7-slim
COPY colorecho db_install.rsp dbca.rsp entrypoint.sh entrypoint_oracle.sh install.sh limits.conf profile run_installer.sh setup.sh sysctl.conf /assets/
COPY bashrc /root/.bashrc
RUN yum -y install unzip
ADD linux.x64_11gR2_database_1of2.zip /install/
ADD linux.x64_11gR2_database_2of2.zip /install/
RUN unzip /install/linux.x64_11gR2_database_1of2.zip -d /install
RUN unzip /install/linux.x64_11gR2_database_2of2.zip -d /install
RUN rm -rf /install/*.zip
RUN chmod 777 -R /assets/*.sh && /assets/setup.sh && /assets/install.sh
RUN echo "************************* Oracle install OK *************************"
RUN rm -rf /install/database
ENTRYPOINT ["/bin/sh","./assets/entrypoint.sh"]
3. 文件结构,这个就得详细说明了,我就是运到了几个坑
bashrc:系统文件,放在系统根目录下的,默认是在root目录下的,用于配置系统环境变量,oraclelinux:7-slim是默认没有这个文件的,需要手动去复制进去,或者换一个基础镜像
db_install.rsp:静默安装的依赖文件,在安装时是没有界面交互的,都是通过命令去完成的,这个文件就把需要的命令工具放在这儿,安装的时候去调用
dbca.rsp:静默安装关于建库的依赖文件,可以提前设置好相关的数据库信息,例如密码,sid等
Dockerfile:docker创建镜像的执行文件,这个就不多说了
entrypoint.sh:安装oracle的入口脚本,会先去判断是否安装了oracle
entrypoint_oracle.sh:系统启动脚本,镜像运行时需要依赖此脚本
install.sh:安装oracle的脚本,因该是镜像创建初期的核心脚本,当然也可以在dockerfile中直接执行安装命令
linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip:这两个就是oracle的安装包了,由于文件太大无法上传,需要自已去下载或者联系我也行
profile:安装需要的环境配置都在这个文件下
sysctl.conf:安装需要的系统配置都在这个文件下
setup.sh:安装oracle需要的环境依赖包脚本
以上是相关的文件说明,其他没说到的脚本属于可以没有的,可以不上传,但是图上标记的几个必须得有,相关资源我已经上传到CSDN上了(传送门)但是安装包没有上传,太大了上传不了,有需要的小伙伴可以去网上下载,或者私聊我进行获取,下载地址可以推荐一个https://www.linuxidc.com/Linux/2012-04/59064.htm
4. 准备工作做好了,就可以开始创建镜像了,创建镜像的命令,能看这个文章的相信都会吧,镜像构建的时间比较长,耐心等待
docker build -t oracle-11g-ee .
构建完成后,我看到我的镜像文件有9个多G,和阿里的镜像差距还是很大的,不过反正我是自己用,也就不在意这些了
5. 镜像构建了,接下来就开始运行,默认端口是1521,这个没改动,你想用其他的也行,首次启动容器,还需要等待oracle的侦听器启动,不知道为啥我的镜像的侦听器启动很慢,足足等了几分钟才能进行使用,所以如果你在本地使用工具连接提示侦听器失败,不要以为是自己的镜像有问题,实际上是侦听器没启动而已,
docker run -itd -p 1521:1521 --restart always --name oracle11g oracle-11g-ee
6. 通过Navicat或者plsql连接oracle,使用system用户进行登录,我试过用sys用户,但是一直登录不了,但是在容器内用sqlplus就能登录,真它丫的奇怪。如果你没有改配置文件,默认密码是oracle,如果你想修改system用户密码,需要进入容器内进行修改
以上就是我关于在docker中安装的oracle的一些操作,相比较使用其他的镜像还是挺安全的,毕竟你不知道其他镜像有没有啥后门之类的;核心脚本都是借鉴其他的人的,当然不用脚本只是dockerfile也是可以的,就看你自己怎么选择了
最后,关于文章中的资源,除了安装包,其他资源我已经上传CSDN上了(传送门),没有积分无法下载的小伙伴也可以私聊我进行获取,我也有其他版本的docker文件
看到这里能不能点个赞再走…