docker

[docker] 오라클 컨테이너 백업하고 바인드 마운트하기 1_실패

99duuk 2024. 6. 9. 18:14

https://99duuk.tistory.com/32

 

docker colima Oralcle

정답은 https://shanepark.tistory.com/400 [MacOS] M1 맥북 도커로 ORACLE DB 실행하기 Intro M1 맥북을 처음 구입 한 이후로 약 1년 반동안, 오라클 데이터베이스를 띄우기 위해 참 많은 노력을 했었습니다. 원래

99duuk.tistory.com

 

기존 colima를 사용해 oracle 컨테이너를 실행해 사용해봤다.
하지만 당시 컨테이너를 run할 때 볼륨 마운트엔 실패했었다. 
무엇이 문제였는지, 볼륨 마운트도, 포트변경도, 아무것도 안됐다. 


백업

1. colima를 실행한다.

colima start --memory 4 --arch x86_64

 

 

2. 컨테이너를 확인한다.

 docker ps -a

 

 

3. oracle 컨테이너를 start한다.

docker start oracle

 

 

4. oracle 컨테이너 셸을 실행한다.

docker exec -it oracle /bin/bash

 

 

5. 일반적으로 오라클 데이터 파일이 저장되는 디렉터리로 이동한 뒤, 파일이 있는지 확인한다.

cd /opt/oracle/oradata
ls -l

 

 

6. 기존 데이터 파일을 선택 경로로 복사한다. (backup이라는 폴더를 Documents에 미리 만들어두었다.)

docker cp oracle:/opt/oracle/oradata /Users/사용자이름/Documents/backup

 

 

복사 완료

 


 

 

새로운 oracle2 컨테이너를 생성해본다.

 

기존 oracle 컨테이너는 해당 명령어로 실행했었다.

 

 

1. 새로운 컨테이너를 실행할 때, 백업된 데이터를 마운트해서 사용한다. 

docker run --name oracle2 -e ORACLE_PASSWORD=pass -p 2521:2521 -v /Users/사용자이름/Documents/backup/oradata:/opt/oracle/oradata -d gvenzl/oracle-xe

 

--name oracle2: 새로운 컨테이너의 이름을 oracle2로 지정한다.

-e ORACLE_PASSWORD=pass: 환경 변수를 설정하여 Oracle 데이터베이스의 비밀번호를 pass로 설정한다.

-p 2521:1521: 호스트의 포트 2521을 컨테이너의 포트 1521에 매핑한다.

-v /Users/사용자이름/Documents/backup/oradata:/opt/oracle/oradata: 호스트의 백업된 데이터를 컨테이너의 /opt/oracle/oradata 디렉토리에 마운트한다.

-d gvenzl/oracle-xe: Oracle XE 이미지를 사용하여 컨테이너를 백그라운드에서 실행한다.

 

 

 

 


안된다.

지난 번과 마찬가지로
컨테이너 실행하면 자꾸 꺼진다.
확인을 할 수도 없다 !

 

 

 

docker run --restart unless-stopped --name oracle2 -e ORACLE_PASSWORD=1234 -p 2521:2521 -v /Users/tars/Documents/backup/oradata:/opt/oracle/oradata -d gvenzl/oracle-xe

 

1. 로그를 확인해본다.

docker logs oracle2

=> 어쩌고 저쩌고....

 

  1. 파일 소유권을 변경할 수 없는 문제
  2. ORACLE_HOME 환경 변수가 설정되지 않아 Oracle Net Listener를 시작할 수 없는 문제


라고 한다...

 


 

docker run --restart unless-stopped --name oracle3 -e ORACLE_PASSWORD=1234 -p 2521:2521 -v /Users/tars/Documents/backup/oradata:/opt/oracle/oradata -d custom-oracle-xe

 

어쩌구 저쩌구 했더니 재시작 문제는 해결했는데

 

로그 메시지에서 나타나는 Permission denied 오류는 데이터베이스가 파일 시스템의 일부 파일에 접근하거나 소유권을 변경하려 할 때 권한이 없음을 나타냅니다. 특히, macOS에서 Docker를 사용할 때 발생할 수 있는 문제입니다.

 

 

 

결국 해결은 못했다.

좀 더 공부해보고 해결해보는 걸로...