티스토리 뷰

 

참조 URL:

 

컨테이너를 언급할 때 데이터베이스가 가장 먼저 생각나는 것은 아니지만, 이것이 변하고 있습니까? 예. 왜 안 돼. 이를 통해 비용을 절감하고 유연성을 높일 수 있습니다. Postgres 및 MySQL로 이를 수행하는 방법에 대한 많은 문서가 있지만 Oracle은 어떻습니까? 

 

그래서 저는 최근에 Oracle DB를 활용하고 개발에서 왼쪽으로 이동 접근 방식을 만들어야 하는 애플리케이션으로 작업하는 작업자가 있었습니다. 따라서 이 문서에서는 컨테이너를 스핀업하는 데 사용할 수 있는 이미지를 만드는 방법에 대해 설명합니다. 의 시작하자.

1단계. Oracle에서 GitHub Repo 풀다운

오라클의 이 리포지토리를 사용하여 여러 다른 서비스를 만들 수 있습니다. 이 기사에서 고려할 특정 영역은 리포지토리 내의 Oracle 데이터베이스 디렉토리입니다.

 

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

git clone git@github.com:oracle/docker-images.git

 

#압축을 풀면 아래와 같은 경로로 이동합니다. 19.3.0 위치까지 gogo~

/home/aaa/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/19.3.0# ll
total 112
drwxr-xr-x 2 root root  4096 Apr  8 20:47 .
drwxr-xr-x 9 root root  4096 Apr  8 20:47 ..
-rw-r--r-- 1 root root    63 Apr  8 20:47 Checksum.ee
-rw-r--r-- 1 root root    63 Apr  8 20:47 Checksum.se2
-rw-r--r-- 1 root root  4911 Apr  8 20:47 Dockerfile
-rwxr-xr-x 1 root root  2474 Apr  8 20:47 checkDBStatus.sh
-rwxr-xr-x 1 root root   904 Apr  8 20:47 checkSpace.sh
-rw-r--r-- 1 root root  5475 Apr  8 20:47 configTcps.sh
-rwxr-xr-x 1 root root  8689 Apr  8 20:47 createDB.sh
-rw-r--r-- 1 root root  1567 Apr  8 20:47 createObserver.sh
-rw-r--r-- 1 root root  6878 Apr  8 20:47 db_inst.rsp
-rw-r--r-- 1 root root  9204 Apr  8 20:47 dbca.rsp.tmpl
-rwxr-xr-x 1 root root  2712 Apr  8 20:47 installDBBinaries.sh
-rw-r--r-- 1 root root  2013 Apr  8 20:47 relinkOracleBinary.sh
-rwxr-xr-x 1 root root 10698 Apr  8 20:47 runOracle.sh
-rwxr-xr-x 1 root root  1021 Apr  8 20:47 runUserScripts.sh
-rwxr-xr-x 1 root root  1141 Apr  8 20:47 setPassword.sh
-rwxr-xr-x 1 root root  1057 Apr  8 20:47 setupLinuxEnv.sh
-rwxr-xr-x 1 root root   679 Apr  8 20:47 startDB.sh
(admin-k8s:harbor) root@k8s6-m:/home/aaa/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/19.3.0#

2단계. 데이터베이스 Dockerfile로 변경

/home/aaa/docker-images-main/OracleDatabase/SingleInstance/dockerfiles# cd 19.3.0/

#아래 경로까지 이동
cd /home/aaa/docker-images-main/OracleDatabase/SingleInstance/dockerfiles

3단계. Oracle에서 바이너리 가져오기

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html 로 이동하여 바이너리를 풀다운합니다. 이 예에서는 Linux 64 zip 파일과 함께 19c를 활용합니다.

oracle 계정이 아직 생성되지 않은 경우 무료로 생성해야 합니다.

 

위 파일의 압축을 풀면 내용이 상당히 많습니다. 

#root@k8s6-m:/home/vagrant/LINUX# mv *.* /home/aaa/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/19.3.0/

아래와 같이 이동하시면 됩니다. 

 root@k8s6-m:/home/vagrant/LINUX# mv *.* /home/aaa/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/19.3.0/

다운로드 크기는 약 2.9GB 크기입니다. zip 폴더를 docker-images/OracleDatabase/SingleInstance/dockerfiles/<version> 에 추가합니다. 이 문서에서는 19.3.0을 버전으로 사용합니다. 버전은 생성 중인 특정 Oracle 데이터베이스 이미지를 나타냅니다. 이 문서에서는 19.3을 사용합니다.

 

 

 

Show the zip binary in the version folder

4단계. Bash를 활용하여 Oracle 이미지 생성

먼저 바이너리가 실행 가능하도록 설정되어 있는지 확인하십시오.

 

chmod +x buildContainerImage.sh

다음으로 bash 스크립트를 실행하여 이미지를 빌드합니다.

 

./buildContainerImage.sh -e -v 19.3.0 -t oracle19c:1.0.0 -o '--build-arg SLIMMING=false'

  •  
  • e: Enterprise Edition으로 구축
  • v: Oracle 데이터베이스 버전을 지정합니다.
  • -o with build-arg SLIMMING=false: 패치 등을 위한 추가 기능을 추가합니다.

5단계. 실행 시 Oracle 데이터베이스 설정

방금 만든 이미지를 테스트하기 위해 docker를 사용하여 로컬에서 실행할 수 있습니다. 물론 Podman에서도 이 작업을 수행할 수 있습니다. 이미지를 테스트하지 않으려면 Kubernetes 부분으로 이동할 수 있습니다. 그러나 컨테이너를 밀어 올리기 전에 로컬에서 테스트하는 것이 좋습니다.

다음을 사용하여 Oracle Database를 실행합니다.

docker run --name oracle-19c -p 192.168.100.10::1521 -p 192.168.100.10::5500 -e ORACLE_SID=ABC -e ORACLE_PDB=ABCPDB1 -e ORACLE_PWD=GoFor1t! oracle19c:1.0.0

이 Oracle Database는 Pluggable 데이터베이스를 사용합니다. 이 경우 식별해야 하는 환경 변수가 거의 없습니다.

ORACLE_SID: 데이터베이스의 SID입니다.

ORACLE_PDB: Pluggable Database는 사용자와 연결하는 서비스로도 사용됩니다.

ORACLE_PWD: 이것은 물론 비밀번호입니다.

Step 6. 비밀번호 생성 후 변경

데이터베이스 서버를 설정한 후 암호를 변경할 수 있습니다. 다음을 실행하여 수행할 수 있습니다.

docker exec <container name> ./setPassword.sh <your-password>
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: oracledb-secret
  namespace: <your-namespace>
data:
  oracleRootPassword: V29ybGQyayE=

7단계. 리포지토리에 이미지 푸시

이제 dockerhub 또는 프라이빗 이미지 리포지토리와 같은 모든 이미지 리포지토리에 푸시합니다.

8단계. 암호 암호 리소스 생성

이것은 단순한 base64 암호입니다. 진정으로 안전하지는 않지만 적어도 배포 구성에는 포함되지 않습니다. oracle-db-secret.yml 이라는 YAML 파일을 만들고 다음을 추가합니다.

이제 다음을 실행하여 파일을 적용합니다.

kubectl apply -f oracle-db-secret.yml

9단계. Kubernetes용 배포 리소스 생성

다음으로 생성한 이미지를 시작하고 새 Oracle 데이터베이스를 프로비저닝하는 데 활용할 배포 리소스를 생성해 보겠습니다.

database-deployment.yml 파일을 만들고 다음을 추가합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: oracle-19c
  namespace: <your-namespace>
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oracle-19c
  template:
    metadata:
      labels:
        app: oracle-19c
        selector: oracle-19c
    spec:
      containers:
      - name: oracle-19c
        image: <your image creation location>
        env:
        - name: ORACLE_SID
          value: <your-sid>
        - name: ORACLE_PDB
          value: <your-portable-db-name>
        - name: ORACLE_EDITION
          value: enterprise
        - name: ORACLE_PWD
          valueFrom:
            secretKeyRef:
              name: oracledb-secret
              key: oracleRootPassword
        resources:
          limits:
            cpu: 1
            memory: 2500Mi
          requests:
            cpu: 1
            memory: 2000Mi
        ports:
        - name: main-port
          containerPort: 1521
        - name: em-port
          containerPort: 5500

이제 다음을 실행하여 적용하십시오.

 

kubectl apply -f database-deployment.yml

이제 Kubernetes에서 첫 번째 Oracle 19c 데이터베이스를 만들었습니다. 이 기사에 추가하거나 Kubernetes를 사용한 Oracle 19c

 

 

(admin-k8s:harbor) root@k8s6-m:/home/aaa/docker-images-main/OracleDatabase/SingleInstance/dockerfiles# ./buildContainerImage.sh -e -v 19.3.0 -t oracle19c:1.0.0 -o '--build-arg SLIMMING=false'

 

댓글