irpas技术客

Oracle Docker 镜像(制作)_catoop_oracle镜像

网络 2048

前言

在一个裸机 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://·/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/oracle SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 21 15:30:50 2019 Version 19.3.0.0.0 Copyright (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.0 SQL> 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 NO 3 LEIPDB READ WRITE NO

SQL>

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

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

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


(END)


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Oracle镜像 #前言在一个裸机 #Linux #上安装 #oracle #安装过