Oracle 데이터베이스 Docker 이미지 생성

7080 단어 oracledatabasedocker
이 기사에서는 Docker를 사용하여 Oracle Database Express Edition을 실행하는 방법을 보여줍니다.

요구 사항



git
Docker
Oracle binaries(선택 사항)

왜 Oracle 전용 게시물입니까?



DockerHub에서 PostgreSQL 또는 MariaDB와 같은 대부분의 일반 데이터베이스에 대한 이미지를 찾을 수 있습니다. 그러나 Oracle에 관해서는 모든 좋은 일이 끝납니다.



(내 생각에) 저작권상의 이유로 오라클은 Docker 인스턴스에서 가져와서 실행할 수 있는 이미지를 제공하지 않습니다.

그런데 이상하게도 그들은 대안을 제시했다.

Docker에서 Oracle 데이터베이스 실행



Oracle은 Oracle Database를 비롯한 많은 제품 오퍼링을 설정하는 데 도움이 되는 Docker 빌드 스크립트 제품군을 제공했습니다. GitHub repository에서 이러한 스크립트를 찾을 수 있습니다.



사전 다운로드된 바이너리가 필요하지 않은 유일한 버전인 18.4.0-xe 버전을 배포합니다. 다른 버전의 경우 아래 설명된 대로 필요한 바이너리를 다운로드해야 합니다.

참고: (선택 사항)으로 표시된 모든 단계는 버전 18.4.0-xe에서는 건너뛸 수 있지만 다른 버전에서는 필수입니다.

(선택 사항) Oracle 바이너리 다운로드



Oracle Download page으로 이동합니다. 예를 들어 oracle-database-xe-18c-1.0-1.x86_64.rpm 필요한 db 버전을 다운로드합니다.

Oracle Github 프로젝트 복제



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

(선택 사항) 데이터베이스 바이너리를 프로젝트 폴더에 복사합니다.



$ cp /path/to/file/oracle-database-xe-18c-1.0-1.x86_64.rpm /path/to/project/docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0

인스톨러를 실행합니다. 옵션 설명은 명령 헬퍼를 참조하십시오.



$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles
$ ./buildContainerImage.sh -v 18.4.0 -x

경고: 스크립트가 완료되기까지 최대 30분이 소요될 수 있습니다.

이미지 확인



도커 이미지를 나열합니다.

$ docker images

oracle/database 18.4.0-xe로 태그가 지정된 이미지가 있는지 확인합니다.

이미지 크기에 주의하십시오. 때때로 설치가 완전히 완료되지 않고 문제를 보고하지 않고 스크립트가 종료됩니다. 이미지 크기는 약 5.89GB여야 합니다.

컨테이너 실행




$ docker run --name oracle \
    -d \
    -p 51521:1521 \
    -p 55500:5500 \
    -e ORACLE_PWD=mysecurepassword \
    -e ORACLE_CHARACTERSET=AL32UTF8 \
    oracle/database:18.4.0-xe


어디에
  • --name : 컨테이너 이름을 지정합니다
  • .
  • -d : 분리 모드에서 컨테이너 실행
  • -p 51521:1521-p 55500:5500는 호스트를 컨테이너 포트에 매핑합니다.
  • -e ORACLE_PWD=mysecurepassword-e ORACLE_CHARACTERSET=AL32UTF8는 환경 변수를 설정합니다. 여기서 ORACLE_PWD는 관리 암호를 설정하고 ORACLE_CHARACTERSET는 데이터베이스의 문자 집합을 설정합니다.
  • docker run 명령을 통해 STATUS 필드를 보고 컨테이너 상태를 확인할 수 있습니다.

    $ d ps
    CONTAINER ID   IMAGE                       COMMAND                  CREATED              STATUS                                 PORTS                                                                                      NAMES
    f7776a6dd664   oracle/database:18.4.0-xe   "/bin/sh -c 'exec $O…"   About a minute ago   Up About a minute (health: starting)   0.0.0.0:51521->1521/tcp, :::51521->1521/tcp, 0.0.0.0:55500->5500/tcp, :::55500->5500/tcp   oracle
    


    예제에서 컨테이너는 여전히 시작 중입니다( health: starting ). 컨테이너가 시작되면 상태가 healty 에서 변경됩니다.
    컨테이너 상태를 확인하는 또 다른 방법은 컨테이너 로그를 보는 것입니다.

    $ docker logs oracle
    ## Omitted for brevity
    *******************
    Prepare for db operation
    7% complete
    Copying database files
    29% complete
    Creating and starting Oracle instance
    30% complete
    31% complete
    34% complete
    38% complete
    41% complete
    43% complete
    Completing Database Creation
    47% complete
    50% complete
    Creating Pluggable Databases
    54% complete
    71% complete
    Executing Post Configuration Actions
    93% complete
    Running Custom Scripts
    100% complete
    Database creation complete. For details check the logfiles at:
     /opt/oracle/cfgtoollogs/dbca/XE.
    Database Information:
    Global Database Name:XE
    System Identifier(SID):XE
    Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.
    
    Connect to Oracle Database using one of the connect strings:
         Pluggable database: 2540b6bf28f7/XEPDB1
         Multitenant container database: 2540b6bf28f7
    Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE
    The Oracle base remains unchanged with value /opt/oracle
    #########################
    DATABASE IS READY TO USE!
    #########################
    
    


    컨테이너를 시작할 때마다 데이터베이스 인스턴스를 설치해야 하므로 컨테이너가 준비되기까지 몇 분 정도 걸립니다.

    데이터베이스에 연결



    원하는 클라이언트를 사용하여 데이터베이스에 연결할 수 있습니다. 내가 사용한 예에서 dbeaver :



    또는 OS 사용자oracle를 사용하여 컨테이너 내에서 bash 세션을 만듭니다.

    $ docker exec -it --user=oracle oracle bash
    


    Oracle Database에 필요한 Linux 환경 변수를 설정합니다.

    bash-4.2# . oraenv
    ORACLE_SID = [XE] ? 
    The Oracle base remains unchanged with value /opt/oracle
    


    그런 다음 Oracle 데이터베이스 시스템에서와 마찬가지로 SQL*Plus에 액세스합니다.

    bash-4.2# sqlplus sys@XEPDB1 as sysdba
    
    SQL*Plus: Release 18.0.0.0.0 - Production on Mon Aug 23 19:49:33 2021
    Version 18.4.0.0.0
    
    Copyright (c) 1982, 2018, Oracle.  All rights reserved.
    
    Enter password: 
    
    Connected to:
    Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
    Version 18.4.0.0.0
    
    SQL> 
    
    


    다음에 온다



    현재 데이터베이스는 작동 중이지만 컨테이너를 실행하려면 많은 시간이 필요합니다. 다음 게시물에서는 다양한 방법을 사용하여 시작 시간을 개선하는 방법을 보여 드리겠습니다.

    출처



    https://github.com/oracle/docker-images
    https://blogs.oracle.com/oraclemagazine/deliver-oracle-database-18c-express-edition-in-containers

    좋은 웹페이지 즐겨찾기