Notice
Recent Posts
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
관리 메뉴

Dev_R

Docker -AWS+Docker+MariaDB 설치하고 외부에서 접속하기 본문

Server/Docker

Docker -AWS+Docker+MariaDB 설치하고 외부에서 접속하기

Dave(데이브) 2020. 4. 11. 02:37
반응형

 

오늘은 제목처럼 AWS EC2 위에 도커를 올리고 그 도커 위에 마리아db 컨테이너를 만들어서 작동시키고

외부에서도 DB를 추가,삭제,확인이 가능하도록 해보려해요.

 

우선 이전에도 계속 했던대로 도커를 설치해 줄게요

 

 

그 전에 아래 명령어를 통해 관리자 권한을 주겠습니다.

sudo su -

 

그럼 이제 도커를 설치할게요

 

yum install docker

 

(추천->)    amazon-linux-extras install -y docker

를 해주면 설치가 진행되구요 중간에 y 만 눌러서 진행을 도와주면 됩니다.

 

 

이제 complete가 떴으니까 실행시켜주도록 할게요

service docker start

 

 

docker version

위 명령어를 통해서 제대로 됫는지 확인할 겸 도커의 버전을 확인해 봅니다.

 

 

설치는 잘 된것 같네요

그러면 이제 마리아 디비 이미지를 가져오도록 할게요

 

 

 

 

 

 

 


 

1. 마리아 디비 이미지 search

 

docker search mariadb

하면 mariadb 이미지 파일이 있는걸 확인했구요

이제 이미지를 내려받습니다.

 

 

2. 이미지 내려받기

 

 

docker pull mariadb/server:latest

위 명령어를 통해 이미지를 다운받았습니다.

:latest 가 아닌 다른 버전을 받고싶으시면 뒤에

:10.3 과 같은 버전 코드를 입력하시면 해당 버전을 다운 받으실 수 있습니다.

 

 

 

docker images

하시면 방금 다운받은 mariadb/server 가 나오네요

 

 

 

 

 

3. docker 컨테이너 생성

 

 

이제 받은 이미지를 통해 컨테이너를 생성해 보겠습니다.

 

docker run --name mariadb -e MARIADB_ROOT_PASSWORD=1234 -p 3306:3306 -d mariadb/server:latest

 

위 명령어를 입력하시면 컨테이너 id 값을 리턴해줍니다.

 

 

 

그 다음에는 제대로 생성 됫는지

생성된 컨테이너를 확인하는 

docker ps -a

명령어로 확인해 보도록 할게요

 

 

 

 

위처럼 뜨시면 잘 작동 하는거예요

 

컨테이너 실행에는 4가지 명령을 알고 계시면 되는데요

 

docker restart mariadb

docker stop mariadb

docker start mariadb

docker kill mariadb

 

딱 명령어만 봐도 알겠죠?

stop 같은 경우에는 마리아db가 먼저 종료되고

이후에 컨테이너가 종료된다고 합니다.

 

이제 생성한 컨테이너를 실행시켜보겠습니다.

 

 

 

 

 

4. 생성한 mariadb 컨테이너 진입

 

docker exec -i -t mariadb bash

위 명령어를 통해 접속합니다.

그다음 mysql에 접속해야하니까 아까 설정해뒀던

user id = root

password = 1234

로 mysql을 실행시켜볼게요

 

 

mysql -uroot -p1234

위 명령어를 입력하면 아래처럼 mysql에 접속할 수 있습니다.

 

 

이제 여기서 데이터베이스를 만들고

테이블을 만들고 할건데요

 

그 전에!!!

 

외부에서 접속이 가능하도록 설정해줘야 해요

이번에는 간단하게

모든 대역에서 접속이 가능하도록 설정을 할건데요

우선 현재는 로컬접속만 가능한 상태인지 확인해볼게요

 

일단

show databases;

use mysql;

로 database를 선택할게요

 

 

이제 user table을 살펴보겠습니다.

 

위 코드를 입력하시면 되는데요

select host, user, password from user;

 

위에 보시면 host에 % 가 있는데

%의 뜻은 어디서든 접속이 가능하다는 뜻이에요

따라서 어디서든 root 아이디와 1234값을 입력해서 현 db에 접속이 가능하다는 말이겠죠

 

그 다음은 my.cnf 파일을 수정할건데요

 

우선 현재 들어가있는 db에서 빠져나옵니다.

exit

 

그다음 /etc/mysql/ 디렉토리로 이동합니다.

 

그다음

vi /etc/mysql/my.cnf

 편집할게요

 

++ 만약 command not found라고 뜬다면-------------------------------------------------------------------

 

apt-get update 로 먼저 업데이트 한 다음

apt-get install vim을 해주세요

 

 

-------------------------------------------------------------------------------------------------------------------

 

 

그러면 이제 my.cnf 안에 쭈루루룱 글이 잇을텐데

이중에서

 

 

bind-address  = 127.0.0.1

이 앞에 #이 없다면 #을 넣어서 주석처리 해주시고

 

:wq

로 저장 후 나와주세요

 

 

이제 도커 컨테이너를 restart 하겠습니다.

 

우선 현재 컨테이너 안에 있는 상태기때문에 exit을 통해 나오구요

아까 말씀드렸던 docker restart mariadb 를 통해 재시작 시켜볼게요

 

 

재시작이 잘 되었네요

 

 

 

 

 

aws 보안 - 인바운드 규칙 설정

 

그다음으로 aws에서 설정해 줘야하는 부분은

보안 관련된 부분인데요

 

인바운드 규칙을 아래처럼 설정하고 저장해주면 됩니다.

 

 

 

 

모든 tcp에서 위치 무관으로 설정해서 포트와 대역을 열어주는 건데요

저는 그냥 test용 이기 때문에 다 열어두었구요

실제 하실때는 원하는 대역폭만큼만 열어서 이용하시면 됩니다~.

 

이제 다 끝났습니다.

 

 

한번 외부에서도 aws위의 docker 위의 maria db 내용을 확인하고 추가 삭제가 가능한지 확인해 볼게요!

 

 

 

우선 현재 사용하고 있던 AWS EC2의 public ip가 필요한데요

 

계속 이용했던 터미널 창 아래에 저렇게 표시가 되어져 있네요

 

이제 이 ip 주소를 가지고 다른 컴퓨터에서 접속을 시도해볼게요

 

 

다른 컴퓨터에서는 외부 db에 접속하기 위해 heidiSQL 프로그램을 이용해볼게요

간단하게 호스트 IP랑 USER 그리고 PASSWORD만 넣어주면 되는데요

 

위처럼 네트워크 유형은 mySQL로 맞추고

라이브러리를 mariadb.dll 로 설정한다음

호스트명/ip에 아까 알아둿던 ip를 입력하시면되는데요

저는 54.205.87.XXX 을 입력하겠습니다.

그리고 아까 만들었던 db 사용자 id와 password를 입력하시면 됩니다.

저 같은경우 아까 root 사용자와 1234로 만들었기 때문에 이대로 해서 열기를 눌러볼게요

 

 

그러면 잠시 렉이 걸리고 응답없음이 뜰 수도 있습니다.

그상태에서 잠시 기다리시면!

 

 

 

이런 창이 뜨시고 

(예) 를 클릭하시면

 

 

 

프로그램의 왼쪽 상단에 아래처럼 데이터베이스가 보이실 거예요!

 

 

 

 

그러면 이제 마지막으로 확인을 해볼게요

우선 데이터 베이스를 하나 만들어볼게요

 

 

요렇게 새로생성 > 데이터 베이스  를 클릭해 주세요

 

그런다음 

TestData 라는 이름으로 데이터 베이스를 만들어 줄게요

 

 

 

 

확인을 누르면 왼쪽 데이터베이스 목록에도 아래처럼 TestData 데이터 베이스가 생겼어요

 

 

 

이제 TestData를 더블 클릭해서 내용을 확인해 볼게요

 

 

안에는 지금 만들었기때문에

위처럼 비어있었는데요

 

아까처럼 새 데이터베이스 만들듯이

새 테이블을 하나 만들어볼게요

 

 

 

 

 

이름은 Test 1 이구요

 

열에 1개만 추가를 해볼게요

 

 

 

docker 라는 이름의 INT 길이 10만큼을 가진 열을 생성햇구요

저장을 하겠습니다~

 

 

 

이제 남은건 AWS 안에있는 MariaDB에도 방금 변경한 내용들이 잘 적용 되어있는지만 확인하면 되는데요

 

 

한번 AWS로 다시 돌아가서~

 

다시 AWS를 켜서

처음부터 빠르게 mysql을 볼게요

 

sudo su -

docker exec -i -t mariadb bash

mysql -uroot -p1234

show databases;

 

 

그러면 이제 아까 다른컴퓨터에서 바꿧던

TestData 데이터베이스가 존재하네요

 

이제 use TestData해서 테이블 내용을 살펴볼게요~

 

아까 적용했던 Test1테이블도 잘 있네요

Test1테이블 안 컬럼도 확인해 볼게요

 

 

 

아까 만들어 두었던 컬럼 docker int 10 잘 삽입이 되었습니다!

 

이상으로 

AWS EC2 에 docker 에 마리아db를 올리고 외부에서 접속해보는 실습을 마치겠습니다.

 

감사합니다~

반응형
Comments