Docker安装Oracle

简介

Oracle官方没有Oracle的Docker镜像。但是可以使用以下两种方式安装Docker版的Oracle:

  1. 使用非官方的Docker镜像;
  2. 在Oracle官方下载Oracle所需要的安装包,自己制作Oracle镜像。

方式一适合个人学习使用,安装快捷,安装方式见:Docker安装Oracle-非官方镜像
如果不信任非官方的镜像、或者在非官方镜像没有找到自己需要的版本,可以使用方式二,本文使用方式二安装。

开始

安装Docker

  1. Centos7安装Docker
    1
    curl -fsSL get.docker.com -o get-docker.sh && sudo sh get-docker.sh --mirror Aliyun && sudo systemctl start docker && sudo systemctl enable docker
  2. Centos8安装Docker
    1
    2
    sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm 
    curl -fsSL get.docker.com -o get-docker.sh && sudo sh get-docker.sh --mirror Aliyun && sudo systemctl start docker && sudo systemctl enable docker
    Docker的配置和优化可以参考Docker的安装和配置
    其它操作系统安装Docker的方式见Docker官网。

下载Oracle安装包和Dockerfile项目

如果是无桌面的Linux服务器,可以用其它电脑先下载好这两个文件,在上传到Linux服务器上。

  1. 下载Dockerfile项目
    Dockerfile项目包含了多个Oracle版本的Dockerfile。下载Dockerfile项目有两种方式:

    1) 去Github下载Dockerfile。 依次点击页面的:Clone or download -> Download ZIP下载,下载后的文件:master.zip,需要把文件解压。

    2)使用Git命令下载:git clone https://github.com/oracle/docker-images.git

  2. 下载Oracle安装包
    Oracle安装包下载地址,选择对应的操作系统和Oracle版本号。本次安装选择12.2.0.1.0,下载后的文件:linuxx64_12201_database.zip,文件大约3.45G。

构建Oracle镜像

  1. 把Oracle安装包复制到Dockerfile项目中
    1
    cp linuxx64_12201_database.zip docker-images/OracleDatabase/SingleInstance/dockerfiles
  2. 执行该目录的构建Oracle镜像脚本
    1
    2
    cd docker-images/OracleDatabase/SingleInstance/dockerfiles
    ./buildDockerImage.sh -v 12.2.0.1 -e

启动Oracle容器

1
2
3
4
5
6
7
8
# 创建Oracle本地存储目录
mkdir -p ~/docker/oracle12c
# 授予该目录权限,要不然启动容器时创建数据库会提示权限不足
sudo chmod -R a+w ~/docker/oracle12c/
# 启动Oracle容器
sudo docker run --name oracle \
-p 1521:1521 -e ORACLE_CHARACTERSET=AL32UTF8 -e ORACLE_PWD=oracle -e ORACLE_SID=ORCLCDB -v ~/docker/oracle12c:/opt/oracle/oradata \
oracle/database:12.2.0.1-ee
参数 含义
–name 容器名称
-p 1521:1521 连接地址,程序连接需要的端口号
-e ORACLE_CHARACTERSET=AL32UTF8 数据库编码
-e ORACLE_PWD=oracle 数据库密码
-e ORACLE_SID=ORCLCDB 数据库实例名
-v ~/docker/oracle12c:/opt/oracle/oradata 数据存储在本地,容器重启后数据不会丢失
oracle/database:12.2.0.1-ee 使用该镜像启动

开始使用

到此,数据库已经安装完成,下一步边可以开始使用Oracle。

1
2
3
4
端口:1521
实例名:ORCLCDB
用户名:sys
密码:oracle

其它补充

重装数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
# 在主机删除数据库目录
sudo rm -rf ~/docker/oracle12c/
# 在主机删除Oracle镜像
sudo docker rm -f oracle
# ---安装重新
# 创建Oracle本地存储目录
mkdir -p ~/docker/oracle12c
# 授予该目录权限,不然启动容器时创建数据库会提示权限不足
sudo chmod -R a+w ~/docker/oracle12c/
# 启动Oracle容器
sudo docker run --name oracle \
-p 1521:1521 -e ORACLE_CHARACTERSET=AL32UTF8 -e ORACLE_PWD=oracle -e ORACLE_SID=ORCLCDB -v ~/docker/oracle12c:/opt/oracle/oradata \
oracle/database:12.2.0.1-ee

保存镜像到文件

可以把此镜像保存成文件:oracle-database-12.2.0.1-ee.tar,传输到其它服务器

1
2
3
4
# 把镜像保存到成文件
docker save oracle/database:12.2.0.1-ee>oracle-database-12.2.0.1-ee.tar
# 复制到其它服务器
scp oracle-database-12.2.0.1-ee.tar [user]@[ip]:~/

加载文件到镜像

1
2
# 加载文件到本地镜像
docker load<oracle-database-12.2.0.1-ee.tar

镜像上传到阿里云

  1. 首先得有个阿里云账号,点击去阿里云官网
  2. 搜索 容器镜像服务,进入到容器镜像服务控制台
  3. 创建 命名空间
  4. 创建 镜像仓库
  5. 客户端上传镜像到阿里云:
    1
    2
    3
    4
    5
    6
    # 登录到阿里云镜像
    sudo docker login --username=[阿里云登录名] registry.cn-beijing.aliyuncs.com
    # 本地的镜像重新打标签
    sudo docker tag oracle/database:12.2.0.1-ee [阿里云分配的镜像地址]/oracle12:oracle/database:12.2.0.1-ee
    # 上传镜像
    sudo docker push [阿里云分配的镜像地址]//oracle12:[镜像版本号]
    更具体的使用方式可以参考阿里云容器镜像的使用说明。
坚持原创技术分享,您的支持将鼓励我继续创作!