티스토리 뷰
참조 URL:
https://medium.com/geekculture/creating-an-oracle-19c-database-image-154d80ae75b7
Oracle 19c 데이터베이스 이미지 생성 및 지속성으로 Kubernetes에 배포
컨테이너를 언급할 때 데이터베이스가 가장 먼저 생각나는 것은 아니지만, 이것이 변하고 있습니까? 예. 왜 안 돼. 이를 통해 비용을 절감하고 유연성을 높일 수 있습니다. 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'
- Total
- Today
- Yesterday
- MSA
- 테라폼
- 여러서버 컨트롤
- 트리이스
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- Oracle
- 코로나19
- CVE 취약점 점검
- (InstantClient) 설치하기(HP-UX)
- 튜닝
- ubuntu
- 앤시블
- 스토리지 클레스
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- [오라클 튜닝] sql 튜닝
- K8s
- directory copy 후 startup 에러
- pod 상태
- 우분투
- 버쳐박스
- 설치하기(HP-UX)
- startup 에러
- 5.4.0.1072
- [오라클 튜닝] instance 튜닝2
- 키알리
- 오라클
- 커널
- 쿠버네티스
- 오라클 홈디렉토리 copy 후 startup 에러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |