Docker搭建Oracle

6,950 阅读3分钟

前言

这两天需要搭建Oracle19c版本进行测试,发现去网上找,或者是去docker hub上搜索,基本上都是sath89/oracle12c这个或者是bfom/oracle-12c这些个镜像,但是就没有人制作了Oracle19c的镜像,我想,这个私人没有制作,那么Oracle自己肯定来了个offical(官方镜像),然后我就去找啊找,但是结果:没有。 后面搜索到一个信息,大致意思是:Oracle官方不允许私人拿他的数据库进行制作一个即pull即run的docker image了,如果在docker hub上有的,那么估计被甲骨文律师事务所给警告删除了.不过,官方还是给了个方案来做Docker的Oracle image.

Oracle官方制作docker image过程

1.先下载Oracle写的一个dockfile的东西

git clone https://github.com/oracle/docker-images.git
这里面包含很多版本的镜像制作脚本工具
我的是clone到了:/media/liuxu/data/leonard/tools/oracle19c

2.下载Oracle对应版本的压缩包(zip文件,如果有多个那就下载多个)

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
这个地址包含了11.2-19c的版本的,如果想找之前,请拉到最后:Previous Database Release Software,进行查找

3.将下载好的ZIP文件copy到dockfile目录

cp ~/Downloads/LINUX.X64_193000_db_home.zip /media/liuxu/data/leonard/tools/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
注意:看你的数据库版本,copy到对应的版本文件夹下面去

4.运行命令,制作docker image

$ cd /media/liuxu/data/leonard/tools/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles 
$ ./buildDockerImage.sh -v 19.3.0 -e

注意:这一个步骤是漫长的等待。也就半个小时而已.输出信息太多,我就不贴了!
最后的输出日志:
Changing groupname of /opt/oracle/oraInventory to dba.
The execution of the script is complete.
Check /opt/oracle/product/19c/dbhome_1/install/root_b26c57265eb5_2019-11-06_05-08-00-978749653.log for the output of root script
Removing intermediate container b26c57265eb5
 ---> 05ead40e7f4e
Step 18/23 : USER oracle
 ---> Running in 6d577e76fba0
Removing intermediate container 6d577e76fba0
 ---> a51d59624aaf
Step 19/23 : WORKDIR /home/oracle
 ---> Running in 5114f387b868
Removing intermediate container 5114f387b868
 ---> 15f8e332761c
Step 20/23 : VOLUME ["$ORACLE_BASE/oradata"]
 ---> Running in bacecd10e611
Removing intermediate container bacecd10e611
 ---> ddbbf7bd1071
Step 21/23 : EXPOSE 1521 5500
 ---> Running in cf58f4f7a5ef
Removing intermediate container cf58f4f7a5ef
 ---> 4ea9a2715652
Step 22/23 : HEALTHCHECK --interval=1m --start-period=5m    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 ---> Running in a63ca1e440ee
Removing intermediate container a63ca1e440ee
 ---> 6dfd61e0006a
Step 23/23 : CMD exec $ORACLE_BASE/$RUN_FILE
 ---> Running in 45122cd289f3
Removing intermediate container 45122cd289f3
 ---> c592b9cb2a9c
Successfully built c592b9cb2a9c
Successfully tagged oracle/database:19.3.0-ee


  Oracle Database Docker Image for 'ee' version 19.3.0 is ready to be extended: 
    
    --> oracle/database:19.3.0-ee

  Build completed in 919 seconds.

详细的可以参考这个:docker-images/OracleDatabase/SingleInstance/README.md 这个里面讲的很仔细(或者这个:github.com/oracle/dock…)

5.启动

docker run --name oracle19c \
-p 1521:1521 \
-p 5500:5500 \
-v /media/liuxu/data/leonard/tools/oracle19c/oracle19c-data:/opt/oracle/oradata \
oracle/database:19.3.0-ee 

注意第一行日志:ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: iV86pmS7ZxI=1
后面:iV86pmS7ZxI=1  都是密码

6.之后自己就可以使用软件登录Oracle了

参考链接:www.dbform.com/2019/05/06/…

问题

启动容器的时候碰到了这个问题:

Cannot create directory "/opt/oracle/oradata/ORCLCDB"
这个问题:是因为,你挂载出来了,然后Docker肯定是写到你挂载的路径下面,然后,没有写入权限。
解决方案就是:给个写的权限就行,我使用:sudo chmod 777 -R /media/liuxu/data/leonard/tools/oracle19c/oracle19c-data (有点暴力)