-
Rancher/Docker/oracle 서버 실행하기ETC/MacOS,Rancher 2024. 11. 9. 12:15
도커 이미지 조회
버전 확인
https://hub.docker.com/r/gvenzl/oracle-xe
이미지 확인 및 다운로드
oracle-xe로 검색하니 `gvenzl/oracle-xe`가 제일 인기가 좋은듯하다. 당첨!
사전작업
볼륨마운트 폴더 생성
컨테이너 안의 오라클 데이터파일이 위치한 경로 `/opt/oracle/oradata`를 mac에서
`/Users/deokjoonkang/dev/opt/database/data/rancher/oracledb` 경로로 설정을 하기 위해서 폴더를 생성해 준다.
$ mkdir /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb
컨테이너로 오라클 올리기 (Rancher) - 실패다운로드$ nerdctl pull gvenzl/oracle-xe:21-slim
컨테이너 띄우기그나마 경량인 21-slim로 설치$ nerdctl run -d --name oracle21c \ -p 1521:1521 \ -e ORACLE_PASSWORD=Test1234@ \ -v /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb:/opt/oracle/oradata \ gvenzl/oracle-xe:latest
ORA-00443: background process "PMON" did not startRancher 메모리 설정 및 CPU코어 수도 변경해주고 컨테이너 실행 옵션까지 변경해주었다.옵션 변경$ nerdctl run -d \ --name=oracle21 \ -p 15210:1521 \ -e ORACLE_PASSWORD='Test1234' \ -e ORACLE_EDITION=EXPRESS \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -e INIT_SGA_SIZE=1024 \ -e INIT_PGA_SIZE=512 \ --memory="4g" \ --shm-size="4g" \ --cpus=2 \ -v /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb:/opt/oracle/oradata \ container-registry.oracle.com/database/express:latest
별짓을 다했다. 근데 안된다.. 공식사이트에서 확인해보니 M칩에서는 안된단다... 젝12 간단히 될줄 알고 시간만 허비해버린..
컨테이너로 오라클 올리기 (Colima -> Docker)
위 문제로 Colima로 docker 명령어로 container를 실행하려고 한다.
Colima를 설치 - 깃허브
$ brew install colima $ brew install qemu
Colima 실행
도커허브 공식사이트에서 알려준대로 메모리를 4로 설정하고 실행해준다.기동되는데 시간이 오래걸린다.
$ colima start --arch x86_64 --memory 4
4GB의 메모리를 할당한 x86_64 아키텍쳐의 Colima VM 를 시작하겠다는 뜻이다.
컨테이너 띄우기
rancher를 사용하지 않고 docker 명령어로 실행한다.
# 이미지 확인 $ docker images # 실행 $ docker run -d \ --name=oracle21 \ -p 1521:1521 \ -e ORACLE_PASSWORD=Test1234 \ -e ORACLE_EDITION=EXPRESS \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -v /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb:/opt/oracle/oradata \ gvenzl/oracle-xe:21-slim # 실행 확인 $ docker ps -a
실행확인 해 보았더니 컨테이너가 정상적으로 실행되지 않았다.
로그를 확인
$ docker logs -f oracle21
ORA-00205: error in identifying control file, check alert log for more info
볼륨마운트 경로 확인
컨테이너 안의 오라클 데이터파일이 위치한 경로 `/opt/oracle/oradata`를 mac에서 `/Users/deokjoonkang/dev/opt/database/data/rancher/oracledb` 경로로 설정하였는데 권한이 부족한 이유였다.
아래와 같이 파일을 모두 삭제한 후 권한을 부여한다.
$ rm -rf /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb/* $ sudo chmod -R 777 /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb
다시 실행
주의할점은 ORACLE_PASSWORD='Test1234'로 싱글 쿼테이션도 같이 넣게 되면 '도 패스워드로 인식하게 됨으로 '은 빼고 넣도록하자. 삽질했다.ㅠ
$ docker run -d \ --name=oracle21 \ -p 1521:1521 \ -e ORACLE_PASSWORD=Test1234 \ -e ORACLE_EDITION=EXPRESS \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -v /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb:/opt/oracle/oradata \ gvenzl/oracle-xe:21-slim
실행 확인
정상적으로 컨테이너가 기동되었다.
컨테이너 진입
$ docker exec -it oracle21 /bin/bash
오라클 접속
system계정으로 접속할때는 패스워드를 Test1234로 넣으면 된다.
# dba권한 접속 sqlplus / as sysdba # 설정한 패스워드 변경시 ALTER USER system IDENTIFIED BY "Test1234";
IntelliJ에서 확인
쉘스크립트
이제 매번 서비스를 실행할때마다 docker명령어를 넣기 귀찮으니 쉘로 만들어 두자.
# 파일 만들기 $ vi build-oracle21.sh # 실행 권한 주기 $ chmod +x ./build-oracle21.sh
build-oracle21.sh
#!/bin/sh IMAGE_NAME=gvenzl/oracle-xe IMAGE_VERSION=21-slim CONTAINER_NAME=oracle21 usage(){ if [ -z "$1" ]; then echo "사용법: $0 help|run|stop|rm" echo "명령어: ./build-mariaDB.sh run" exit fi } run() { echo "" echo "############### [RUN] - docker run ##### - STARTED" stop echo "" rm echo "" echo "##### [RUN] - docker run $CONTAINER_NAME ...options" docker run -d \ --name=oracle21 \ -p 1521:1521 \ -e ORACLE_PASSWORD=Test1234 \ -e ORACLE_EDITION=EXPRESS \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -v /Users/deokjoonkang/dev/opt/database/data/rancher/oracledb:/opt/oracle/oradata \ gvenzl/oracle-xe:21-slim docker ps -a echo "############### [RUN] - docker run ##### - ENDED" echo "" } stop() { echo "##### [STOP] - docker stop $CONTAINER_NAME" docker stop "$CONTAINER_NAME" } rm() { echo "##### [RM] - docker rm $CONTAINER_NAME" docker rm "$CONTAINER_NAME" } main() { local cmd=${1:-''} case "${cmd}" in "run") run ;; "stop") stop ;; "rm") rm ;; "help"|*) usage exit ;; esac } main ${@}
실행 및 확인하기
컨테이너가 있으면 내리고, 지우고 다시 올리는 스크립트 실행!
$ ./build-oracle21.sh run
끝!
재부팅 되면
# colima 실행 $ colima start --arch x86_64 --memory 4 # oracle21 서비스 실행 (/Users/deokjoonkang/dev/opt/database/build-oracle21.sh) $ ./build-oracle21.sh run OR $ /Users/deokjoonkang/dev/opt/database/build-oracle21.sh run
'ETC > MacOS,Rancher' 카테고리의 다른 글
Rancher - nginx 쉘로 띄워보기 (0) 2024.07.11 Mac에서 Python으로 된 thumbor Rancher로 기동 (0) 2024.04.12 Mac crontab 설정 (0) 2024.04.08 Rancher - react build html nginx로 띄워보기 (0) 2024.03.15 Ruby 버전 업데이트 (1) 2023.11.03