준비물

  • mac (intel chip)
  • 넉넉한 저장공간 (docker, docker image를 포함해서 약 10기가는 넘게 있어야 합니다.)

m1 칩의 경우 docker 를 활용해서 oracle db를 사용할 수가 없다고 합니다... (21/09/09 기준)
제가 구글링해서 알아본 결과라서 혹시 다른 해결 방법이 있다면 댓글로 알려주시면 감사하겠습니다. 🙇‍♂️

들어가기 전에...

이 글은 iyk2h님의 블로그에
작성된 글을 따라서 진행하다 마주친 에러를 해결하는 과정이 포함되어있습니다.

설치와 진행은 위 링크에서 그대로 진행하시고 에러 해결만 이 글의 마지막 부분을 참고하셔도 좋습니다.

Docker 셋업

Docker 설치

도커 공식 홈페이지에서 설치를 진행해주시면 됩니다.

꽤 무거운 프로그램이라 설치 과정에 시간이 조금 걸릴 수 있습니다.

설치가 끝난 뒤 Application 폴더에 이동을 하고 난 뒤 실행을 해보면 상태바에 고래 한 마리가 있을겁니다.

초록색 불로 Docker Desktop is running 이라는 텍스트가 떠있으면 정상적으로 도커 엔진이 돌아가는 것입니다.

이미지 다운로드

Docker 는 가상환경을 만들어주는 플랫폼입니다.
가상환경의 청사진을 가지고 있는 것을 docker image라고 하고 oracle db 를 사용하기 위한 이미지를 다운 받는 절차입니다.

제가 사용한 이미지는 vitorfec/oracle-xe-18c 입니다.

터미널을 열고 다음 명령어를 입력해주세요.

docker pull vitorfec/oracle-xe-18c

약 8기가 정도 되는 크기라 5분? 정도 걸립니다...

설치가 완료되면 다음 명령어를 통해 설치가 잘 되었는지 확인해주세요

docker images
# 또는 docker image ls

컨테이너 띄우기

클래스가 있으면 인스턴스가 있듯이
이미지가 있으면 이미지를 통해 실제로 만들어진 가상환경이 필요합니다.
도커에서는 그걸 컨테이너 라고 합니다.

터미널에 다음과 같은 명령어를 입력해주세요.

docker run --name oracle18c -d -p 5150:22 -p 5151:1521 -e ORACLE_PWD=1234 vitorfec/oracle-xe-18c

위 명령어는

  • docker: docker 야
  • run: 컨테이너를 띄우자
  • --name: oracle18c 라는 이름의 컨테이너를
  • -d: 백그라운드로 실행하고
  • -p: 컨테이너의 22번 포트와 1521 번 포트를 호스트의 5150 포트랑 5151 포트랑 연결해줘
  • -e: 환경변수로 ORACLE_PWD는 1234 로 설정해놓을게
  • 사용할 이미지는 vitorfec/oracle-xe-18c

라고 명령하는 겁니다. 실행해볼까요?

정상적으로 컨테이너가 떴는지 확인해보려면 다음과 같은 명령어를 입력해주시면 됩니다.

docker ps

이게 두 줄 처리가 되어서 보기 힘들 수 있거든요, 그럴 땐 키보드의 cmd + "-" 를 눌러 축소하면 한 줄로 보입니다.
+ps. 원상복구는 cmd + 0

또는 Docker Desktop 을 사용해서 확인하는 방법도 있습니다.

포트를 사용한다고 했으니 정상적으로 LISTEN 하고 있는지도 확인해봅시다.

netstat -anv | grep LISTEN

5150 포트와
5151 포트가 정상적으로 LISTEN 되고 있는 것을 확인했습니다.

ps. docker stop <컨테이너 이름> 을 통해 컨테이너를 멈출 수 있습니다.
다시 실행은 stop -> start 로 변경하면 됩니다.

컨테이너 접속

자 그럼 이제 저희는 oracle db 가 세팅이된 가상 환경이 생긴거에요.
그럼 이 가상환경에 접속을 해볼까요?
마치 ssh 를 사용해 원격으로 컴퓨터에 로그인하듯 컨테이너에도 접속 할 수 있습니다.

저는 접속이라는 표현을 더 좋아하는데 번역상으로는 실행이 더 맞을 것 같긴합니다.

터미널에 다음과 같은 명령어를 입력해주세요

docker exec -it -u oracle oracle18c sqlplus / as sysdba

위 명령어를 해석하면 다음과 같습니다.

  • docker: 도커야
  • exec: 컨테이너 실행시켜줘
  • it: 접속하면 쉘을 열어줘 (-i: interactive, -t: tty)
  • -u: 접속하는 유저는 oracle 이구 (임의로 변경 가능)
  • oracle18c: oracle18c 라는 컨테이너 실행시켜줘
  • sqlplus / as sysdba: 접속하면 sqlplus / as sysdba 명령어를 실행시켜줘

명령어를 오타 없이 잘 작성해주셨다면 다음과 같은 화면이 뜰겁니다.

🎉 예이!

종료할 때는 cmd + d 를 해주시면 됩니다.

참고자료

https://iyk2h.tistory.com/138
https://github.com/oracle/docker-images/issues/670#issuecomment-358374879

profile
개인 공부 정리 블로그 입니다.

0개의 댓글