본문 바로가기

Docker

[Docker] AWS EC2에 mysql 컨테이너 설치 및 접속

반응형

우선 현재 있는 모든 이미지와 컨테이너를 지워준다.

docker rm -f `docker -a -q`

docker rmi -f `docker images`

 

mysql은 dockerhub에 존재하는 이미지 이기때문에 별도의 과정 없이 다운로드 받아서 바로 사용할 수 있다.

 

docker run -d -p 9876:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.6

mysql5.6이 성공적으로 실행 되었다.

 

docker exec -it {container ID} /bin/bash

를 이용하여 bash를 이용하여 container에 접속할 수 있따.

접속하면 mysql -u root -p를 이용하여 원래 mysql에 접속하여 사용하는것 처럼 정상적으로

사용할 수 있다.

database를 만들고 확인해 보는 간단한 테스트가 잘 작동하는 것을 알 수 있다.

 

exit를 이용하여 bash를 나와주고

 

docker inspect {container ID} 를 이용하여 컨테이너의 세부 정보를 열어 준다.

 

위를 보면 ip주소를 알 수 있다.(172.17.0.1)

 

위의 컨테이너를 aws EC2 서버에서 접속하기 위해서는 EC2인스턴스에 mysql을 다운 받아 주어야 한다.

 

sudo apt install mysql-client-core-5.7 명령어로 다운로드 받아준다.

 

mysql -u root -p --host 172.17.0.2 --port 3306 으로 mysql에 접속할 수 있다.

 

 

mysql -u root -p --host 127.0.0.1 --port 9876 을 통해서도 mysql에 접속이 가능하다.

 

우리가 컨테이너를 실행시킬때 서버의 9876포트와 mysql 3306 포트를 연결시켜 주었기 때문에 두가지 방법으로 접속이 가능하다.

 

1. 컨테이너에 접속해서 mysql을 실행

2. 호스트에서 컨테이너의 ip를 이용해서 접속

3. 호스트에서 호스트의 ip를 이용해서 포트포워딩을 이용하여 접속

 

 

mysql에 접속해서

 

use mysql;

CREATE USER 'test'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';

FLUSH PRIVILEGES;

exit

 

유저를 생성하고 권한 부여후 종료.

 

 

mysql 컨테이너를 재시작 해 준다.

 

 

또한 외부에서 접속할 수 있도록 9876 포트를 개방해 준다.

 

HeidiSQL을 이용하여 외부에서 aws EC2인스턴스의 데이터베이스에 접속할 수 있는지 확인해 본다.

 

 

정상적으로 접속이 되었고 데이터베이스를 조회할 수 있는것을 알 수 있다.

 

 

하지만 일반적으로 사용할 때에는 삭제될수 있고 일시적일 수 있는 도커 컨테이너에 mysql을 이용하지는 않는다.

다른 방법에 대해서는 다음시간에 알아보도록 하자

 

반응형