美文网首页容器
Docker制作Oracle19c镜像

Docker制作Oracle19c镜像

作者: 夜行神喵 | 来源:发表于2020-02-20 23:38 被阅读0次

    1. 介质准备

    1.1. 下载Oracle docker build file

    近期Oracle 官方发布了19.3 版本的docke-images 构建程序,可在这里下载:可到github下载docker-images-master.zip

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

    image.png

    将下好的docker-images-master.zip 解压放在 /Users/myz/Docker/ 目录下:
    cd /Users/myz/Docker/docker-images-master/OracleDatabase/SingleInstance/dockerfiles/19.3.0/

    1.2. 下载Oracle19c 预安装程序

    手动下载oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm ,同样放在19.3.0/ 目录下
    下载地址:

    http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

    1.3. 准备Oracle19c的安装程序

    下载19C安装介质(可从官网) LINUX.X64_193000_db_home.zip同样放在19.3.0/ 目录下
    其他可根据需要 把常用的安装包也放到这个位置 下, 如我常用 rlwrap-0.42-1.el6.x86_64.rpm

    image.png

    2. 配置 Oracle image

    2.1. 修改Dockerfile

    使用自带的oraclelinux:7-slim 及用官网介绍的方法遇到一些问题不好解决. 后来换成我常用的基础镜像centos:7.6.1810 加Oracle预安装文件oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm最后成功构建 .

    vi Dockerfile
    #FROM oraclelinux:7-slim as base
    FROM centos:7.6.1810 as base
    ....
    # Copy files needed during both installation and runtime
    # -------------
    COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DIR/
    COPY oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm $INSTALL_DIR/
    COPY rlwrap-0.42-1.el6.x86_64.rpm $INSTALL_DIR/
    COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ 
    ....
    

    2.2. 修改setupLinuxEnv.sh

    使用本地安装preinstall 包, 及增加些其他常用工具包;

    vi setupLinuxEnv.sh
    …
    chmod ug+x $ORACLE_BASE/*.sh && \
    #yum -y install oracle-database-preinstall-19c openssl && \
    yum -y localinstall /opt/install/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm   \
    && yum -y install openssl  \
    && yum -y install openssl-devel \
    && yum -y install lsof \
    && yum -y install iproute \
    && yum -y install net-tools \
    && yum -y install rsyslog \
    && yum -y install bash-completion \
    && yum -y install tmux \
    && yum -y install lrzsz \
    && yum -y install telnet \
    && yum -y localinstall /opt/install/rlwrap-0.42-1.el6.x86_64.rpm && \
    rm -rf /var/cache/yum && \
    ln -s $ORACLE_BASE/$PWD_FILE /home/oracle/ && \
    echo oracle:welcome1 | chpasswd && \
    echo root:welcome1 | chpasswd && \
    chown -R oracle:dba $ORACLE_BASE
    

    2.3. 修改installDBBinaries.sh 文件

    vi installDBBinaries.sh
    …
    # Temp location
    #rm -rf /tmp/* && \
    …
    

    这里需要注释掉 rm /tmp/* 动作, 不然会报如下错误:

    rm: cannot remove '/tmp/ks-script-6pKh_p': Operation not permitted
    rm: cannot remove '/tmp/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm': Operation not permitted
    rm: cannot remove '/tmp/yum.log': Operation not permitted
    Removing intermediate container 508f7c0f5041
    The command '/bin/sh -c chmod ug+x $INSTALL_DIR/*.sh &&     sync &&     $INSTALL_DIR/$INSTALL_DB_BINARIES_FILE $DB_EDITION' returned a non-zero code: 1
    
    ERROR: Oracle Database Docker Image was NOT successfully created.
    ERROR: Check the output and correct any reported problems with the docker build operation.
    

    2.4 .其它视需要

    默认数据库 CDB模式, 数据库名 ORCLCDB, PDB name 为 ORCLDPB1 (可在run时指定)
    其他可视需要修改 createDB.sh 及runOracle.sh


    3. 构建 Oracle镜像

    Dockfile所在上一级目录下下执行build

    ./buildDockerImage.sh -v 19.3.0 -e

    
    cd /Users/myz/Docker/docker-images-master/OracleDatabase/SingleInstance/dockerfiles/
    ./buildDockerImage.sh -v 19.3.0  -e
    ....
    Removing intermediate container 4a78c5c0bca1
     ---> 7a679ae24618
    Step 25/25 : CMD exec $ORACLE_BASE/$RUN_FILE
     ---> Running in 2bb5ef7ec74c
    Removing intermediate container 2bb5ef7ec74c
     ---> 3c1a9d1ffc0a
    Successfully built 3c1a9d1ffc0a
    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 653 seconds.
    
    myzmac:dockerfiles myz$
    myzmac:dockerfiles myz$ 
    

    大概10分钟左右成功完成镜像制作
    如果过程中报错,需要仔细查看报错文件及内容进行排错;

    myzmac:dockerfiles myz$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    oracle/database     19.3.0-ee           3c1a9d1ffc0a        6 minutes ago       6.61GB
    

    接下来就可以通过该镜像来安装部署Oracle19c实例....

    相关文章

      网友评论

        本文标题:Docker制作Oracle19c镜像

        本文链接:https://www.haomeiwen.com/subject/dkgfqhtx.html