Oracle 12c容器镜像制作

对于 Oracle 数据库的容器镜像制作,Oracle 官方提供了 Dockerfile 文件和制作脚本。


制作步骤

1. 下载官方 Dockerfile 和制作脚本

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

2. 准备数据库安装文件

将数据库安装文件放置在 docker-images/OracleDatabase/SingleInstance/{version} 目录下。

注意:脚本中默认的文件名为 linuxx64_12201_database.zip,如果使用 V839960-01.zip 文件,需要创建符号链接:

1
ln -s V839960-01.zip linuxx64_12201_database.zip

3. 运行构建脚本

进入 docker-images/OracleDatabase/SingleInstance 目录,运行构建脚本:

1
$ sudo ./buildContainerImage.sh -e -v 12.2.0.1

参数说明

  • -e:安装企业版本(Enterprise Edition)
  • -v:指定版本号(如 12.2.0.1)

 注意:这一步运行时间较长,需要耐心等待。安装完成后会创建一个容器镜像,大小约 6GB。

构建完成后验证镜像:

1
$ sudo docker images

输出示例:

REPOSITORY        TAG           IMAGE ID       CREATED        SIZE
oracle/database   12.2.0.1-ee   0650dcb96360   12 hours ago   6.01GB
oraclelinux       7-slim        970e50328c70   7 weeks ago    138MB

4. 启动容器实例

根据实际需求修改端口、SID、密码等参数:

1
2
3
4
5
6
7
8
9
10
11
12
$ sudo docker run --name oracle12c \
-p 1521:1521 -p 5500:5500 -p 2484:2484 \
--ulimit nofile=1024:65536 \
--ulimit nproc=2047:16384 \
--ulimit stack=10485760:33554432 \
--ulimit memlock=3221225472 \
-e ORACLE_SID=ORCLCDB \
-e ORACLE_PDB=ORCLPDB1 \
-e ORACLE_PWD=mypassword \
-e ENABLE_ARCHIVELOG=true \
-e ENABLE_TCPS=true \
oracle/database:12.2.0.1-ee

参数说明

  • -p 1521:1521:Oracle 数据库监听端口
  • -p 5500:5500:Oracle Enterprise Manager 管理端口
  • -p 2484:2484:Oracle TCPS 端口
  • --ulimit:设置文件描述符、进程数、堆栈、内存锁等限制
  • ORACLE_SID:Oracle 系统标识符
  • ORACLE_PDB:可插拔数据库名称
  • ORACLE_PWD:SYS/SYSTEM 用户密码
  • ENABLE_ARCHIVELOG:启用归档日志
  • ENABLE_TCPS:启用 TCPS 安全连接

5. 验证部署

连接到容器验证:

1
$ sudo docker exec -it oracle12c sqlplus sys/mypassword as sysdba;

或者:

1
$ sudo docker exec -it oracle12c sqlplus system/mypassword;

在 SQL*Plus 中执行查询验证:

1
SQL> select * from v$session;