MacOS에서 오라클 사용하기 (a.k.a.Docker)

맥OS를 사용중인 사람이 오라클을 다운받으려고 공식사이트에 접속해도 할 수 있는게 없을 것이다. 오라클은 윈도우와 리눅스용으로만 제공하고 있기 때문이다. 그렇다면 맥을 사용하는 개발자는 오라클을 사용할 수 없는걸까?

당연히 아니다. 가상OS를 사용해서 오라클을 사용할 수 있다.

가상 OS를 사용하는 방법으로는 Virtual Machine과 Docker 두 가지로 나뉠 수 있다.

Docker를 처음들어본 사람은 이 유튜브 영상[얄팍한 코딩사전 - Docker가 뭐고 왜 쓰는건가요?]을 시청해보길 바란다. 개인적으로 구독하고 재미있게 시청하는 채널인데 4-5분 가량의 영상이며 개발을 처음 시작하는 사람들에게 쉽고 재미있게 설명하는 영상들을 올려주는 채널이다. 좋아요와 구독을 추천한다.

Virtual Machine과 Docker의 차이는 여기서 설명하기보다는 공부할 때 참고한 링크[서강혁 - Docker와 VM]를 첨부하겠다. 사실 나도 계속 공부중이어서 해당 글을 작성한 작성자만큼 잘 정리해서 전달할 정도가 되지못한다..

시간이 조금 더 쓰더라도 제대로 알고 배우고 싶다면 이 강의를 추천한다. 도커의 개념부터 명령어, 오라클, MySQL 설치하는 것까지 설명해주시며, 강의는 4개 영상, 러닝타임은 약 100분이 조금 넘는다.


목차

지금부터는 Docker를 이용하여 오라클을 사용하는 초간단 메뉴얼(?)을 정리해서 소개한다. 솔직히 Docker를 모르고 이해하지 못했어도 아래 방식대로 그대로 따라하기만 해도 간단하게 오라클을 시작할 수 있다.

1. Docker 설치하고 실행하기

Docker 공식 사이트에서 Docker Desktop for Mac을 설치한다.

설치하고 나면 실행하면 상태바에 Docker가 실행되는걸 확인할 수 있다.

Docker를 부팅하는데에는 몇 초간의 시간이 소요된다. 완전히 실행되면 클릭해서 열어본다.

회원가입을 하고, 회원가입된 이메일과 패스워드로 로그인한다.

2. 오라클 image 가져오기

오라클이 설치된 이미지를 가져온다. Docker에서 말하는 image란 개발환경(?)을 의미하는 것으로 보인다. 기관이나 기업에서 공식적으로 Docker 이미지를 배포하기도 하지만, 개발자들이 자신의 개발환경에 맞는 컨테이너 이미지를 구축해서 DocketHub에 배포할 수 있다. 나는 개발자가 만들어놓은 이미지를 가져와서 사용했다.

Docker 이미지를 가져오는 방법은 두 가지이다.

브라우저로 접속해서 DockerHub에서 이미지를 찾아와서 가져오는 방법, 터미널에서 명령어로 검색해서 가져오는 방법.

우린 터미널에서 명령어를 검색해서 가져오겠다. Docker를 사용하려면 결국 터미널을 이용해야하는데, 굳이 브라우저로 넘어가서 이미지를 찾기보다 터미널에서 이미지를 검색하고 가져오는 것까지 모두 마무리하겠다.

Docker가 실행중인 상태에서 터미널을 실행한다.

docker search [keyword] 형태로 입력을 해주면 된다.

우린 오라클을 사용할 수 있는 이미지를 찾고 있으므로 docker search oracle-xe 로 입력하면 된다. 그럼 아래와 같은 검색결과가 터미널 콘솔에 출력될 거다.

1
$ docker search oracle-xe

왼쪽의 NAME이 해당 이미지의 이름이고, DESCRIPTION은 해당 이미지를 배포한 개발자가 작성한 이미지의 설명이다. 오라클의 버전이나 이미지에 대한 짧은 설명이 첨부되었으니 읽어보고 가져오면 된다. 위에 검색결과는 STARS 순으로 정렬되는데 가장 위에 노출되는 이미지가 가장 많은 STARS를 받은 이미지이다. 신뢰도가 높다고 할 수 있다. 공교롭게도 가장 위에 검색결과로 출력된 이미지 oracleinanutshell/oracle-xe-11g 가 description이 없지만 stars가 높으므로 이걸 가져와보자.

Gitub에서 repository를 가져오는 방식처럼 docker pull [image name] 을 입력하면 이미지를 가져온다.

우리가 입력해야할 명령어는 다음과 같다.

1
$ docker pull oracleinanutshell/oracle-xe-11g

이미지가 잘 설치한지 확인하고 싶다면, docker images 라는 Docker 명령어를 입력해보자. 설치한 이미지들을 볼 수 있다.

이 글을 작성한 시점은 2019년 6월이다. 이후에 이 글을 보시는 분들은 우리가 사용한 오라클 이미지를 찾지 못할 수 있다. 꼭 똑같은걸 쓸 필요는 없으니 위의 방식대로 또 검색해서 찾아서 가져오면 된다.

3. Container 생성하고 포트 연결하기

오라클 사용에 필요한 이미지를 설치했으나 이미지만으로는 오라클을 사용할 수 없다. dmg 포맷의 파일을 설치했다고 해서 즉시 어플리케이션을 실행할 수는 없지않은가. 이제 우리가 사용할 수 있는 형태로 만들어야 한다. 설치한 이미지로 컨테이너를 생성하는 것이다.

1
$ docker create -it --name [container-name] -p 1521:1521 [docker-image-name]

오라클 Docker 컨테이너의 1521 포트를 로컬호스트의 1521 포트로 포워딩한다는 의미의 명령어이다.

위의 명령어를 터미널에서 입력하면 컨테이너가 생성될 것이다. 이제 이 컨테이너를 실행함으로써 오라클을 실행할 수 있다. 그럼 이제 오라클을 잘 실행되는지 확인해보자.

4. Container 실행하기

현재 어떤 컨테이너가 실행중인지 확인하려면 docker ps 를 입력하면 알 수 있다. 실행중인 컨테이너의 목록을 보여주는 Docker 명령어인데, 아래처럼 보인다면 컨테이너가 실행중인 것이다.

위 이미지는 아까 설치한 이미지로 생성한 컨테이너가 실행중임을 알 수 있다. 생성시기는 2주 전이고 현재 실행된지는 1시간이 넘었다는 것까지 알려준다.

만약 아무것도 보이지 않는다면, 실행중인 컨테이너가 없다는건데 실행여부와 상관없이 모든 컨테이너를 볼 수 있는 명령어는 docker ps -a 이다.

1
$ docker ps -a

컨테이너가 언제 생성되었고, 언제 종료되었는지 알 수 있다. 실행중인 컨테이너는 어디 포트에 연결되어 실행되고 있음도 docker ps 명령어와 마찬가지로 알 수 있다.

실행되고 있는 컨테이너가 없다면, 이제 컨테이너를 실행해야한다.

1
$ docker start [container ID]

위의 Docker 명령어를 입력하면 해당 컨테이너를 실행한다. 잘 실행되고 있는지 알고 싶다면 docker ps 를 입력하여 확인해보면 된다.

만약 컨테이너를 종료하고 싶다면, 아래 Docker 명령어로 컨테이너를 종료할 수 있다.

1
$ docker stop [Container ID]

5. Container 접속하기

글에서 언급하지 않았지만 우리가 설치한 오라클 Docker 이미지는 우분투 기반으로 생성된 이미지이다. 그렇다면 해당 컨테이너가 정말 우분투 환경으로 만들어진건지 어떻게 알 수 있을까?

컨테이너에 직접 접속해보면 알 수 있다. 컨테이너가 실행중인 상황에서 아래 명령어를 입력하면 컨테이너에 접속할 수 있다.

1
$ docker exec -it [Container ID] bash

접속한 컨테이너의 운영체제 버전을 확인하려면 아래의 리눅스 명령어를 입력해야 한다.

1
$ cat /etc/issue

우분투의 버전을 알 수 있다. 새로운 터미널 창(cmd+n)을 열어서 같은 명령어를 입력하면 아무 결과도 보이지 않을 것이다. cat /etc/issue 는 리눅스에서만 작동되는 명령어이기 때문이다.

Docker를 사용하게 된걸 환영한다!

6. 오라클 접속하기

우리의 본 목적이었던 오라클을 접속해보자. 오라클을 접속하기 위한 방법도 두 가지가 있다. CLI방식의 SQLPlus와 SQLDeveloper. 첫 시작부에 언급했듯 본 포스트는 처음부터 끝까지 터미널로 하기로 했으므로 SQLPlus를 실행하여 오라클에 접속하겠다.

간단하다.

컨테이너에 접속한 상태에서 터미널 입력창에 sqlplus 만 입력하면 된다.

접속할 계정의 user-name와 password를 입력하면 오라클 데이터베이스에 접속했음을 알 수 있다.

학습용도로 사용할 수 있는 임의의 데이터베이스가 있다. user-name으로 scott, password로 tiger를 입력하면 따로 데이터베이스를 만들지 않아도 쿼리를 작성해볼 수 있다.

만약 scott 계정이 없다고 한다면, system/oracle 로 접속가능하다.

만약 오라클 사용을 중단하고 싶다면 exit 명령어로 SQLPlus를 종료할 수 있다.

마찬가지로 접속한 컨테이너에서 빠져나오고 싶을 때에도exit 명령어로 컨테이너를 빠져나올 수 있다.