프로그램 개발 도중 DB가 필요하는 경우가 종종 있다

회사 내부 서버에 DB가 있다면 사용하면 되지만 없으면 설치하여 사용해야 한다

하지만 DB설치가 시간도 오래 걸리고 설정하는 것도 많다

이런 거 수고를 줄이기 위해 Docker를 이용하여 Oracle를 사용하기로 하였다

 

설치환경

*데스크톱 : WIN10

*VMware 가상 머신 OS : CentOS 7

*DB : Oracle 11g

 

설치 순서

1. VMware의 CentOS 7에 Docker설치

2. Docker 이미지 다운로드 및 실행 (Pull & Run)

3. DB 사용자 생성 및 접속

4. Docker 기차 명령어

 

1. VMware의 CentOS 7에 Docker설치

 1) root 로그인

 2) 패키지 업데이트

 3) Docker & Docker Registry 설치

 4) Docker 서비스 등록

 5) Docker 실행

 6) Docker 실행 확인

 

1) root 로그인
#su 

우선 Docker를 설치하기 위해서 패키지 업데이트가 필요하다

패키지 업데이트는 Root 유저만 할 수 있다

 

 

2) 패키지 업데이트
# yum -y update

패키지 업데이트 완료

 

3) Docker & Docker Registry 설치
# yum -y install docker docker-registry

Docker 설치 완료

 

4) Docker 서비스 등록
# systemctl enable docker.service

 

5) Docker 실행
# systemctl start docker.service

 

6) Docker 실행 확인
# docker -v

 

2. Docker 이미지 다운로드 및 실행 (Pull & Run)

 1) Oracle 이미지 다운로드

 2) Oracle 이미지 실행

 3) 컨테이너 접속

 

1) Oracle 이미지 다운로드

Docker 이미지를 다운로드하기 위해서는 Docker Hub에 접속해서 검색하면 된다

Docker Hub URL : https://hub.docker.com/

Docker Hub에서 마음에 드는 이미지를 찾았다면 Pull 하면 된다 (이미지 다운로드하는 것을 Docker에서는 Pull이라 부른다)

docker pull <업로드한 사용자/이미지 이름>:<태그>

# docker pull brunodias20/centos-oracle11g

다운로드 한 이미지 확인
# docker images

 

2) Oracle 이미지 실행

docker run <옵션> <이미지 이름> <실행할 파일>
# docker run -p 1521:1521 brunodias20/centos-oracle11g

-p : port포워딩 <컨테이너 포트> : <호스트 포트>

ex) docker run -p 1521:9999 brunodias20/centos-oracle11g

9999 포트로 호출하게 되면 Docker 이미지 안에 있는 Oracle은 1521 포트로 접속하게 된다

DB를 설치할 때 1521 포트를 다른 포트로 변경할 수 있지만, Docker는 이미 설치가 완료 된 상태 이므로

port 포워딩 옵션을 통해 DB의 포트를 변경 할 수 있다

이미지 실행 확인 확인
# docker ps

 

3) 컨테이너 접속

Docker 이미지는 OS+Oracle로 이루어져 있다

이미지 안에 있는 OS에 접속해야 DB가 설치되어 있는 서버에 접속하는 것과 같은 의미이다

그러기 위해서는 실행된 이미지에 접속해야 한다

실행된 이미지에 접속하기 위해서는 'CONTAINER ID'를 알아야 한다

'CONTAINER ID'는 docker ps 명령어로 알 수 있다

 

# docker exec -it e71fa7f4c629 bin/bash

'CONTAINER ID'로 접속 된것을 확인 할 수 있다

 

3. DB 사용자 생성 및 접속

  1) sqlplus 로그인

  2) sys계정 비밀번호 초기화 (pw : oracle)

  3) 유저 생성

  4) 유저 권한 부여

  5) DB 접속 확인

 

여기서는 DB 사용자를 생성하고 넘어가기만 한다

DB 사용자를 생성하는 방법의 자세한 방법은 아래 글을 참조 바란다

https://duruwawa.tistory.com/26?category=715452

 

[Oracel]User 생성 및 권한 부여

프로그램 개발을 하다 보면 DB를 사용해야 할 경우가 생긴다 그럴 때마다 DB 설치는 "NEXT"만 눌러 설치를 잘한다 하지만, DB 사용자를 생성하는 방법은 자꾸 잊어 버리게 되서 구글에서 검색을 자�

duruwawa.tistory.com

 

1) sqlplus 로그인

'CONTAINER ID'로 접속하게 되면 sys로 로그인해서 유저를 생성해주면 된다

하지만 이미지를 만든 사람이 sys계정의 패스워드를 어떤 걸로 했는지 알 수가 없을 때가 있다

이럴 때는 sys의 계정 패스워드를 변경하면 된다.

 

SQL> sqlplus /nolog

sqlplus 로그인 

 

2) sys계정 비밀번호 초기화 (pw : oracle)

SQL> conn sys/oracle as sysdba;

connected 된것을 확인

3) 유저 생성( polarion_user  / polarion_user )

SQL> CREATE USER polarion_user IDENTIFIED BY polarion_user DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;

 

4) 유저 권한 부여

SQL> GRANT CONNECT, DBA, RESOURCE TO polarion_user;

 

5) DB 접속 확인

유저까지 생성이 완료되었으면 이제 DB 클라이언트 프로그램으로 접속하면 된다

우선 Oracle 이미지로 접속하여 IP주소를 알아낸다

 

# ifconfig

IP 주소 확인

SQL developer프로그램을 이용하여 DB에 접속한다

DB에 접속된 것을 확인할 수 있다

 

4. Docker 기타 명령어

 1) 컨테이너 정지

 2) 컨테이너 시작

 3) 컨테이너 삭제

 4) 이미지 삭제

 

1) 컨테이너 정지

docker stop [컨테이너 ID]
# docker stop e71fa7f4c629

 

2) 컨테이너 시작
docker start [컨테이너 ID]
# docker start e71fa7f4c629

 

3) 컨테이너 삭제
docker rm -f [컨테이너 ID]

docker rm -f e71fa7f4c629

4) 이미지 삭제
docker rmi [이미지 ID]

docker rmi e71fa7f4c629

 

*정리*

1. VMware의 CentOS 7에 Docker설치
# yum -y update
# yum -y install docker docker-registry
# systemctl enable docker.service
# systemctl start docker.service
# docker -v

2. Docker 이미지 다운로드 및 실행 (Pull & Run)
# docker pull brunodias20/centos-oracle11g
# docker images
# docker run -p 1521:1521 brunodias20/centos-oracle11g
# docker ps
# docker exec -it e71fa7f4c629 bin/bash

3. DB 사용자 생성 및 접속
SQL> sqlplus /nolog
SQL> conn sys/oracle as sysdba;
SQL> CREATE USER polarion_user IDENTIFIED BY polarion_user DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
SQL> GRANT CONNECT, DBA, RESOURCE TO polarion_user;
# ifconfig
SQL developer 실행

4. Docker 기차 명령어
# docker stop e71fa7f4c629
# docker start e71fa7f4c629
# docker rm -f e71fa7f4c629
# docker rmi 44eb2958095d

VMware

프로그램 개발을 하다 보면 보면 이것저것 많은 프로그램들을 설치하게 된다
이렇게 자꾸 설치 하게 되다 보면 나의 컴퓨터는 점점 느려지고
느려지는 것을 버티지 못하여 포맷을 하게 된다
이러한 무한 반복을 줄이기 위하여 VMware를 이용하게 된다
WMware는 가상 머신이다. 내 컴퓨터 속에 컴퓨터를 하나 더 설치하여 사용하는 것이다

이렇게 가상 머신을 사용하다가 가상머신 프로그램이 꼬여 작동이 안 되면
뒤도 안 돌아보고 삭제하면 된다
물론 설치가 잘된 가상 머신이 있다면, 이 가상머신 파일을 백업하여 두고두고 사용해도 된다!!!

그럼 이제부터 가상 머신을 설치하겠다

설치 환경

*데스크톱 : WIN10

*가상 머신 운영체제 : Centos 7

 

 

VMware가 설치되어 있다는 가정하에 설명하겠다

VMware는 사이트에서 다운로드하고 'Next'만 누르면 설치된다

 

절대주의 사항이 있다

혹시 데스크톱에 'desktop docker for windows ( Docker )'가 설치되어 있다면, 'desktop docker for windows'를 삭제하고 VMware를 사용하기 바란다!!! 2개가 동시에 실행이 안된다 ㅠ_ㅠ

 

 

VMware를 실행시키고 'Create a New Virtual Machine'를 클릭한다

 

'I will install the operating system later.'를 선택하고 Next

 

'Linux' 선택, Version은 'CentOS 7 64-bit'선택 (자신이 가지고 있는 OS 운영체제에 맞게 설정)

 

자신이 원하는 Name을 작성한다

가상 머신 파일이 저장될 위치를 지정한다 (용량을 많이 차지하므로 용량이 넉넉한 드라이브로 지정하는 것을 추천)

 

'Store virtual disk as a singel file'을 선택(single file이 성능이 더 좋다고 함) 하고 

'Maxumum disk size'는 자신이 원하는 용량을 입력한다

 

'Customize Hardware...'을 클릭

 

Memory를 2048MB로 설정 (자신이 원하는 값으로 설정)

 

Processors에서 'Number of processor cores'4로 설정 (자신이 원하는 값으로 설정)

 

Finish를 눌러 완료한다

'Edit virtual machine settings'을 클릭

'Connect at power on'을 선택하고 

'Use ISO image file'선택하고 Centt OS  ISO 파일이 있는 경로를 설정한다

 

이제 설정은 모두 완료되었다 실행 버튼을 클릭하여 가상 머신을 시작한다

 

'Install CentOS 7'을 클릭하여 설치한다

 

korea를 검색하여 '한국어'를 선택한다(영어를 사용하고 싶다면 English를 선택하면 된다)

 

'설치대상'을 클릭

 

설정 바꿀 것 없이 '완료'를 클릭하면 된다

 

'소프트웨어 선택'을 클릭

 

'서버 - GUI 사용'을 선택한다( X 윈도우를 설치하지 않아도 바로 GUI모드를 사용할 수 있도록 설치해준다)

 

'설치 시작'을 눌러서 설치를 진행한다

 

Root 암호 설정과 사용자 생성을 한다

 

설치가 완료되었다면 '재부팅'을 눌러서 재부팅한다

 

재부팅이 완료되면 라이선스를 동의해야 한다

 

약관 동의 체크!

 

인터넷을 사용하기 위해서 '네트워크 및 호스트명' 클릭

 

'이더넷 켬'으로 설정 호스트명을 입력하고 '적용'을 누른 후 현재 호스트 이름을 확인하여 변경되었는지 확인한다

 

'설정 완료'를 누른다

 

로그인되면 아까 생성한 유저를 로그인한다

 

'한국어'를 선택한다

 

'다음'을 누른다

 

위치 정보 서비스를 선택하고 다음을 누른다

 

'건너뛰기'를 눌러 설정을 마무리한다

 

설정 완료!! 이제 VMware를 사용하면 된다

 

VMware 기본 설정은 다음 글을 참조

[VMware][CentOS7]초기 세팅(인터넷 연결, sudo 명령어 사용,java설치 환경변수등록,방화벽 해제)

 

[VMware][CentOS7]초기 세팅(인터넷 연결, sudo 명령어 사용,java설치 환경변수등록,방화벽 해제)

VMware를 설치하고 CentOS를 설치하고 나면 초기 세팅해줘야 할 것들이 몇 가지 있다 이러한 것들을 정리해 나중에 시간을 단축하기 위해 정리한다 1. 인터넷 연결 2. sudo 명령어 사용하기 (sudoers 사��

duruwawa.tistory.com

 

*정리*

'desktop docker for windows'가 설치되어 있다면 삭제

'Store virtual disk as a singel file'을 선택'I will install the operating system later' 선택
'OS' Type, 'Vesion' 선택
'Store virtual disk as a singel file' 선택
'Connect at power on' 선택
'서버 - GUI 사용' 선택

'네트워크 및 호스트명'에서 '이더넷 켬' 설정

DELL CMOS 환경은 UI라 익숙하지 않아 정리한다

 

포맷 환경

*노트북 (DELL)

*운영체제 : WIN10

*C드라이브 : SSD

*D드라이브 : HDD

 

HDD에는 자료가 들어 있어 포맷하지 않고 그대로 사용하고,
SSD는 포맷하고 WIN10을 설치할 예정이었다

 

처음 SSD를 장착하게 되면 SSD 인식이 안될 때가 있다 이때는 다음 2가지 설정만 확인하면 된다

 

1. UEFI 모드 사용

[General]-[Boot Sequence]-[UEFI]

UEFI 모드 사용

UEFI는 기존 BIOS의 한계를 극복하고 안정성과 편의성을 높인 펌웨어 인터페이스이다

 

 

2. AHCI 모드 사용

[System Configuration]-[SATA Operation]-[AHCI]

AHCI 모드 사용

SSD 사용자는 AHCI 모드로 설정하셔야 SSD의 입출력 성능이 향상되며 일종의 병목현상 중 하나인 프리징 현상도 막을 수 있고 트림 기능도 완벽하게 사용이 가능하기 때문에 꼭 설정하는 것이 좋다

 

 

하지만 , WIN10 USB를 만들고 부팅 후 포맷하고 설치하려는 순간 에러가 발생했다

오류 (0x80300024)

"선택한 위치에 windows를 설치할 수 없습니다. 오류 (0x80300024) "
빨간색으로 된 디스크에 설치하려고 했는데 에러가 발생했다
구글링을 해보니 디스크1 에는 windows를 설치할 수 없다고 한다

즉, 첫 번째로 인식된 디스크에만 설치가 가능하다고 한다... (정말 신기하다...)

그림에서는 디스크0, 디스크1 이렇게 하드 디스크가 2개 인식되었는데, 이 순서가 잘못되어서 설치가 안되는 것이다...

해결법으로는 CMOS에서 SSD->HDD로 부팅 순서를 바꿔주라고 하는데...
DELL CMOS는 UI로 되어 있어 너무 어색했다... 부팅 순서를 바꾸는 법을 모르겠다..
다른 글들을 찾아보니 HDD를 제거하고 SSD에 WIN10을 설치 한 다음
다시 HDD를 장착하라고 하는데... 노트북을 뜯는 일이 더 귀찮았다

CMOS를 찾아보는 도중 방법을 찾았다
바로 HDD를 인식 안 하도록 하는 것이었다

 

[System Configuration] - [Drives] - [SATA-0 체크 해제] 

내 노트북에는 SATA-0번에 HDD가 연결되어 있어 SATA-0 체크 해제를 했다

이렇게 하고 재부팅하게 되면 HDD가 인식되지 않아 자연스럽게 SSD가 디스크 0으로 되어 설치가 가능하다

'이 디스크에 Windows를 설치할 수 없습니다. 선택한 디스크에 MBR 파티션 테이블이 있습니다. EFI 시스템에서는 GPT 디스크에만 Windows를 설치할 수 있습니다.'
이런 에러가 날 때 도 있다
원인은 EFI 시스템에서는 GPT 디스크에만 윈도를 설치가 가능하다
SSD가 MBR 방식으로 되어 있기 때문에 설치가 안되는 것이다
MBR방식을 GPT 방식으로 바꾸어야 한다

단축키
SHIFT + F10 

CMD창이 나오면 다음 명령어들을 입력한다
diskpart (diskpart 실행)
list disk (disk 리스트 확인)
select disk [디스크 번호] (GPT로 변환할 디스크 선택)
  list disk 결과에서 gpt로 포맷할 디스크 번호 입력
clean (포맷)
convert gpt (gpt로 변경)
exit (CMD창 닫기)

이후 다시 WINDOW를 설치하면 된다


*정리*

SSD 인식 불가

[General]-[Boot Sequence]-[UEFI 체크]

[System Configuration]-[SATA Operation]-[AHCI 체크]

 

"선택한 위치에 windows를 설치할 수 없습니다. 오류 (0x80300024) "

부팅순서 변경

[System Configuration] - [Drives] - [SATA-0 체크 해제] 

 

'이 디스크에 Windows를 설치할 수 없습니다. 선택한 디스크에 MBR 파티션 테이블이 있습니다. EFI 시스템에서는 GPT 디스크에만 Windows를 설치할 수 있습니다.' 

MBR->GPT 변경

SHIFT + F10 (CMD창)
diskpart (diskpart 실행)
list disk (disk 리스트 확인)
select disk [디스크 번호] (GPT로 변환할 디스크 선택)
clean (포맷)
convert gpt (gpt로 변경)
exit (CMD창 닫기)

다시 Windows 설치 진행

VMware를 설치하고 CentOS를 설치하고 나면 초기 세팅해줘야 할 것들이 몇 가지 있다

이러한 것들을 정리해 나중에 시간을 단축하기 위해 정리한다

 

1. 인터넷 연결

2. sudo 명령어 사용하기 (sudoers 사용자 추가)

3. java 설치 및 환경 변수 등록

4. 방화벽 해제

5. 자주 사용하는 명령어

 

 

1. 인터넷 연결

CentOS를 설치하고 나면 인터넷이 되다가 리부팅하거나 그러면 안될 때가 있다

이럴 때는 인터넷 활성화를 해줘야 한다

cd /etc/sysconfig/network-scripts/

ll

 

network-scripts 디렉터리에서 파일 리스트 보는 명령어로 보게 되면 ifcfg-ens33이라는 파일이 있다

파일명은 OS마다 다를 수 있으니 꼭 확인을 해야 한다 (보통 ifcfg-enXX 이런 식으로 되어 있다)

 

 

ifcfg-ens33 파일을 vi 에디터로 열어 ONBOOT옵션을 yes로  수정한다

vi ifcfg-ens33

ONBOOT=yes

ONBOOT=yes 수정

수정이 완료되면  다음 명령어로 재실행을 한다

service network restart

 

2. sudo 명령어 사용하기 (sudoers 사용자 추가)

사용자로 로그인한 상태에서 root 권한으로 프로그램을 실행하려고 하다 보면 다음과 같은 에러가 발생하는 경우가 있다

"sudoers 설정 파일에 없습니다"

sudoers에 사용자 추가가 안되어서 에러가 발생한다

sudoers 파일에 sudo 명령어를 사용하려는 User를 추가해줘야 한다

sudoers파일을 수정하려면 root로 로그인 한 다음에 수정해야 한다

su
visudo -f /etc/sudoers

sudoers를 수정할 때에는 visudo를 사용해야 한다

vi와는 인코딩도 다르고, 문법 체크 기능도 포함되어 있다고 한다

sudo 권한을 줄 user를 등록해준다

mft_c    ALL=(ALL)    ALL

등록을 해주면 mft_c 유저로 sudo 명령어를 사용할 수 있다

 

3. java 설치 및 환경 변수 등록

java 설치 유무 확인

which javac

which는 특정 명령어의 위치를 찾아주는 명령어이다

 

which

 

설치 가능한 java 리스트를 먼저 확인한다

yum list java*jdk-devel

설치 리스트에서 "java-1.8.0-openjdk-devel.x86_64" Open Jdk를 설치하도록 하겠다

 

java 설치

yum install java-1.8.0-openjdk-devel.x86_64

 

설치가 완료되면 다시 which 명령어로 javac가 있는지 확인한다

javac 명령어의 위치가 /usr/bin/javac에 링크되어 있는 것을 확인할 수 있다

링크는 윈도우의 바탕화면 바로가기 아이콘과 같다

실제 javac가 있는 위치는 다른 곳에 있다

javac가 실제 있는 위치를 알려고 하면 readlink 명령어를 이용해야 한다

 

javac가 있는 위치 확인

readlink -f /usr/bin/javac

readlink는 심볼릭 링크가 연결되어 있는 원본의 파일명을 얻는 명령어이다

javac의 실제 위치는 "/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/bin/javac"에 있는 것을 확인할 수 있다

 

여기에서는 설치된 java를 User의 홈 디렉터리로 복사하여 사용하도록 하겠다(원본을 두고 복사해서 사용)

중요한 점은 꼭 root 권한이 아닌 user로 로그인하여 복사해야 한다

root로 로그인한 상태에서 복사하게 되면 권한을 다시 부여해야 한다

 

java디렉터리 복사

su mft_c

cp -rf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64 /home/mft_c/java

ll /home/mft_c/java

cp명령에서 -rf 옵션을 주게 되면 하위 디렉터리 모두를 복사하게 된다

ll명령어가 안된다면 ls 명령어로 해도 된다

ll명령어로 보게 되면 소유자가 mft_c로 되어 있다

 

이제 profile 파일을 수정하여 JAVA_HOME을 등록한다

cd ~

vi ./. bash_profile

홈 디렉터리로 이동하여 profile 파일을 vi에디터로 수정한다

 

export JAVA_HOME=/home/mft_c/java
export PATH=$JAVA_HOME/bin:$PATH

위의 2줄을 추가하고 저장한다

 

profile을 수정했다면, 다시 로그온 하던가 아니면 profile을 갱신해야 한다

. ./.bash_profile

또는

source ./.bash_profile

JAVA_HOME이 잘 잡혔는지 echo 명령어를 통해 확인한다

echo $JAVA_HOME

 

4. 방화벽 해제

호스트 PC에서 VWware 접속할 때 방화벽 해제를 해야 접속할 수 있다
일시적으로 방화벽 해제
systemctl stop firewalld
systemctl stop iptables
systemctl stop ip6 tables

영구적으로 방화벽 해제
systemctl disable firewalld
systemctl disable iptables
systemctl disable ip6 tables

 

여기서 firewalld만 해제하면은 실질적은 방화벽 해제가 된다

 

5. 자주 사용하는 명령어

파일 및 디렉터리 궈한 변경

chmod -R [권한] [파일명]
ex) chmod -R 755 install.sh

 

파일 및 디렉터리 소유자 변경

chown -R [owner name]:[group name] [filename or directory]
ex) chown -R mft_c:mft_c /home

 

특정 파일 제외 제거
find . ! -name [제외 할 파일 명] -delete

ex) find . ! -name cyberzlinux.64.tar -delete

 

현재 시스템 그룹 확인

/etc/group

 

압축 풀기
tar -xvf [tar 파일명]

tar -xvf cyberzlinux.64.tar

 

vi에디터

끝으로 이동 q

행 번호 표시 : set nu

set nu 명령어

 

HOST 이름 변경

hostnamectl set-hostname [HOST이름]

ex) hostnamectl set-hostname MFT_C

 

HOST 이름 확인

hostname

hostname

*정리*

1. 인터넷 연결

cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
ONBOOT=yes
service network restart

 

2. sudo 명령어 사용하기 (sudoers 사용자 추가)

su 
visudo -f /etc/sudoers
mft_c    ALL=(ALL)    ALL

 

3. java 설치 및 환경 변수 등록

which javac
yum list java*jdk-devel
yum install java-1.8.0-openjdk-devel.x86_64
readlink -f /usr/bin/javac
su mft_c
cp -rf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64 /home/mft_c/java
cd ~
vi ./.bash_profile
export JAVA_HOME=/home/mft_c/java 
export PATH=$JAVA_HOME/bin:$PATH
. ./.bash_profile or source ./.bash_profile
echo $JAVA_HOME

4. 방화벽 해제

일시적으로 방화벽 해제 
systemctl stop firewalld 
systemctl stop iptables 
systemctl stop ip6tables 

영구적으로 방화벽 해제 
systemctl disable firewalld 
systemctl disable iptables 
systemctl disable ip6tables

 

5. 자주 사용하는 명령어

chmod -R [권한] [파일명]
ex) chmod -R 755 install.sh

chown -R [owner name]:[group name] [filename or directory] 
ex) chown -R mft_c:mft_c /home

find . ! -name [제외 할 파일 명] -delete
ex) find . ! -name cyberzlinux.64.tar -delete

/etc/group

tar -xvf [tar 파일명]
tar -xvf cyberzlinux.64.tar

vi에디터
끝으로 이동 q
행 번호 표시 : set nu

hostnamectl set-hostname [HOST이름]
ex) hostnamectl set-hostname MFT_C

hostname

+ Recent posts