前言

在一个裸机 Linux 上安装 Oracle 步骤很多,且对安装环境有不少要求,一不小心就容易出错。安装过 Oracle 的想必都有一定感触。
在有些场合中我们对 Oralce 没有那么高的要求,比如临时测试、临时运行个项目等单数据库实例场景。这种情况使用 docker 一键启动运行 docker 会特别方便,运行时将数据挂载出来也能在很大程度上保证数据安全问题。

Oracle 官方已经正式发布了应该构建 Oracle 镜像的 dockerfile,目前支持列表如下(引用自官方):

Oracle Database 21c (21.3.0) Enterprise Edition, Standard Edition 2 and Express Edition (XE)
Oracle Database 19c (19.3.0) Enterprise Edition and Standard Edition 2
Oracle Database 18c (18.4.0) Express Edition (XE)
Oracle Database 18c (18.3.0) Enterprise Edition and Standard Edition 2
Oracle Database 12c Release 2 (12.2.0.2) Enterprise Edition and Standard Edition 2
Oracle Database 12c Release 1 (12.1.0.2) Enterprise Edition and Standard Edition 2
Oracle Database 11g Release 2 (11.2.0.2) Express Edition (XE)

Oracle on docker 是非常优秀的体验和测试 Oracle 数据库的方法。

教程

本文以构建 19.3.0 版本的镜像为例,做一下步骤教程:

1、下载官方的 Oracle 构建包

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

2、下载官方的 dockerfile 构建包

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

3、构建 docker 镜像

1、下面是我下载好的两个压缩包

2、解压缩 docker-images-main.zip

3、进入 ./docker-images-main/OracleDatabase/SingleInstance/dockerfiles

4、根据需要进入对应的版本目录(本例 19.3.0

5、将下载的 Oracle zip 附件拷贝到该目录中

6、构建DOCKER镜像

$ cd ~/docker-images/OracleDatabase/SingleInstance/dockerfiles
$ ./buildContainerImage.sh -v 19.3.0 -e

慢慢等待执行……

完成以后使用 docker images 可以看到已经有成功构建的 Oracle 19c 镜像了,同时构建了 Oracle Linux 7 的基础镜像,如下:

[root@localhost dockerfiles]# docker images
REPOSITORY        TAG         IMAGE ID       CREATED              SIZE
oracle/database   19.3.0-ee   b4d8488865d1   About a minute ago   6.54GB
oraclelinux       7-slim      4133e87bc7fa   5 weeks ago          132MB

4、运行 Oracle 容器

1、新创建一个 oracle 用户,这初始属于 oinstall 组,且同时让他也属于 dba 组

[root@harbor ~]# groupadd oinstall
[root@harbor ~]# groupadd dba
[root@harbor ~]# useradd oracle -g oinstall -G dba

2、切换到 oracle 用户,然后创建数据目录

su - oracle
mkdir -p ~/oradata/oracle19c

3、启动 oracle 容器

docker run -itd --name oracle19c \
-p 1521:1521 \
-p 5500:5500 \
-v /home/oracle/oradata/oracle19c:/opt/oracle/oradata \
oracle/database:19.3.0-ee

在第一次运行容器的时候,会自动创建新的数据库,其中使用 -v 参数,是将上面新创建数据目录映射到容器内的 /opt/oracle/oradata 目录中,这样就完成了将数据文件存储在本机文件系统中而非docker容器内,避免删除容器导致数据丢失的问题。

docker run 的更多参数,可以详见官方文档 docker-images/OracleDatabase/SingleInstance/README.md

4、密码

容器启动后,通过 docker logs -f oracle19c,查看日志,能看到自动生成的SYS等用户的密码,如下示例:

ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: aGHc3GKeSBj=1

如果需要修改数据库用户密码,可以在容器运行之后,通过以下命令修改。

docker exec <container name> ./setPassword.sh <your password>

比如下面的例子,将数据库sys用户密码设置为简单的 oracle123456888

$ docker exec oracle19c ./setPassword.sh oracle123456888
The Oracle base remains unchanged with value /opt/oracleSQL*Plus: Release 19.0.0.0.0 - Production on Tue May 21 15:30:50 2019
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0SQL>
User altered.SQL>
User altered.SQL>
Session altered.SQL>
User altered.SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

一直到出现以下字样,表示数据库已经正常创建并且可以使用了。

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

5、关于 SID

默认创建的数据库SID是ORCLCDB,创建的PDB是ORCLPDB1,也可以在第一次docker run的时候,用 -e 参数来指定SID和PDB的名字。比如:

docker run -itd --name new-oracle19c \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=ORCL \
-e ORACLE_PDB=MYPDB1 \
-v /home/oracle/oradata/oracle19c:/opt/oracle/oradata \
oracle/database:19.3.0-ee

6、登录验证

直接登录容器使用sqlplus做简单的验证。注意使用之前docker run时候回显的用户密码。

[root@docker dockerfiles]# docker exec -it oracle-19c /bin/bash
[oracle@6a5cd3f9fb6c dbs]$ export ORACLE_SID=ORCLCDB
[oracle@6a5cd3f9fb6c dbs]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 8 02:00:16 2020
Version 19.3.0.0.0

Copyright © 1982, 2019, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> show pdbs;

CON_ID CON_NAME              OPEN MODE  RESTRICTED

 2 PDB$SEED              READ ONLY  NO3 LEIPDB              READ WRITE NO

SQL>

也可以在浏览器中登录Oracle 19c内置的EM Express来通过图形界面 https://localhost:5500/em 访问和监控。

注意是 https,Username:sys,Password:***,Container Name:不用填

最后你可以选择将这个镜像 push 到你的私服中给其他地方使用。


(END)

Oracle Docker 镜像(制作)相关推荐

  1. Docker镜像制作规范

    Docker镜像制作规范 镜像(Image)是在基础文件集(root filesystem)之上依次变更的集合,及在容器运行的默认执行参数. 术语 层(layer) 镜像由层(layer)组成.每一层 ...

  2. docker镜像制作(二)——构建企业镜像LAMP+BBS

    docker镜像制作(二)--构建企业镜像LAMP+BBS 一.LAMP概述 二.进行搭建 1.启动基础镜像容器 2.容器中优化yum源,并安装软件 3.软件初始化 ①.ssh的开启 ②.mysql的 ...

  3. docker镜像制作(一)

    docker镜像制作(一) 一.基于容器的镜像制作(例如虚拟机ssh登录容器,以centos7.4为例) 1. 启动基础镜像容器,并安装软件包 2.对ssh进行配置 3.更改容器内的root密码,否则 ...

  4. Docker笔记三 Docker镜像制作

    Docker笔记三 Docker镜像制作 1.Docker镜像制作方法: docker commit 保存当前container的状态到镜像,生成p_w_picpath. docker build 利 ...

  5. 开源免费图片文字识别 OCR 工具 tesseract v4.1.0 的 Docker 镜像制作与使用

    开源免费图片文字识别 OCR 工具 tesseract v4.1.0 的 Docker 镜像制作与使用 一 背景 在日常的一些工作中,偶尔也需要我们把图片转换为文字.目前大部分办公软件还无法实现类似的 ...

  6. Docker 镜像制作和管理

    2 Docker 镜像制作和管理 2.1 Docker 镜像说明 2.1.1 Docker 镜像中有没有内核 docker run --rm apline uname -r #内核 2.1.2 为什么 ...

  7. Docker 镜像制作教程:减小镜像体积 两个技巧,将 Docker 镜像体积减小 99%

    对于刚接触容器的人来说,他们很容易被自己制作的 Docker 镜像体积吓到,我只需要一个几 MB 的可执行文件而已,为何镜像的体积会达到 1 GB 以上?本文将会介绍几个奇技淫巧来帮助你精简镜像,同时 ...

  8. Docker镜像制作与仓库搭建

    Docker 1,docker镜像制作 2,docker仓库搭建 1,docker镜像制作 docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,已统计Docker Hub超过30%的官方镜像 ...

  9. jdk17运行环境docker镜像制作

    在将java应用部署到docker环境的过程中,一个支持运行java程序的镜像是必不可少的.由于oracle授权方面的问题,docker hub 上一般只有基于openjdk的镜像,而且open jd ...

最新文章

  1. 函数式编程语言python-写 Python 代码不可不知的函数式编程技术
  2. 【若依(ruoyi)】Unknown column ‘create_time‘ in ‘order clause‘
  3. matlab多径信道模型,基于matlab的无线多径信道建模与仿真分析
  4. Linux删除安卓温控,RK平台关闭温度控制降频功能
  5. python scrapy框架基如何实现多线程_Python多线程爬图Scrapy框架爬图
  6. Win10安装配置CLion+MinGW
  7. ArcGIS创建拓扑
  8. thinkpad锁屏壁纸存放目录
  9. C语言结构体,共用体所占字节数计算
  10. 李秘书讲写作:我讲写作课你愿意听吗
  11. 项目实践系列-点击生成自定义设置的二维码
  12. 中国历史和世界史横向对照表,收藏了长知识。 ​​​​
  13. 著名的图像检索系统介绍[转]
  14. 南方cass计算表面积_CASS-工程应用“计算表面积”
  15. CF1004F Sonya and Bitwise OR(线段树平衡复杂度+or 前缀性质)
  16. 完整性约束条件:唯一性约束
  17. tomcat 绑定花生壳免费域名
  18. 计算机网络(3)数据链路层
  19. AC-PEG-OH,Acrylate-PEG-Hydroxyl,丙烯酸酯-聚乙二醇-羟基可用来修饰蛋白质
  20. Centos7 deploy mongoDB Replica set

热门文章

  1. 还在背面试题?听小米面试官怎么说?【面试官教你如何对线面试官】
  2. 【迷失岛游戏框架开发个人每集总结(第四期)】
  3. html标签怎么制作足迹地图,用百度地图API做个人足迹地图教程
  4. Oracle 11g实时SQL监控 --好东西不该藏着
  5. 【Labview】基于Labview的BMI计算器
  6. 什么是计算机网络 它有哪些主要功能,什么是计算机网络及主要功能有哪些?...
  7. 侏儒の言葉---あなたの一生に感動する「三」
  8. 中国共享汽车行业需求状况及发展前景预测报告(新版)2022-2027年
  9. 营收超10亿元,又一家英特尔与小米投资的中国半导体企业即将上市
  10. 这样用 lerna 也太爽了吧!