본문 바로가기
Web

Docker에 MySQL 띄우기

by 히포파타마스 2022. 8. 10.

Docker에 MySQL 띄우기

 

Docker에 MySQL이 담긴 Container를 띄운다.

 

 

 

1. Docker란?

도커는 컨테이너 기반의 가상화 플랫폼이다.

여기서 컨테이너란 컨테이너가 실행되고 있는 호스트 os의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술을 뜻한다.

다시 말하자면, 도커는 독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술이라고 할 수 있다.

 

OS부터 시작해서 필요한 모든 파일을 독립적으로 생성하고 hypervisor를 거쳐야 하는 가상 머신에 비해 컨테이너는 베이스 환경의 OS를 공유하고 프로세스를 격리하는 방식이기 때문에 실행 속도가 훨씬 더 빠르다.

 

 

 

 

2. Docker로 MySQL을 띄우는 이유

2.1 독립적인 프로세스 운용

내 로컬 환경에 설치된 MySQL과 독립적으로 DB를 운영하고 싶은 경우 도커를 이용할 수 있다.

 

예를 들어 나는 새로운 프로젝트 시작할 때 MySQL설정을 이것저것 바꿔야 했는데 잘못된 설정을 되돌리지 못해 MySQL를 지웠다 설치했다 여러 번 한 경험이 있다. 이럴 때 기존 MySQL에 있는 자료들도 다 삭제하게 돼서 많이 불편했던 경험이 있다.

 

도커를 이용해 MySQL을 컨테이너로 띄우면 잘못된 설정을 하더라도 MySQL을 매번 삭제할 필요 없이 컨테이너를 삭제하고 다시 띄우기만 하면 된다. 

또한 로컬 환경과 독립적으로 실행되기 때문에 컨테이너를 삭제하고 다시 올려도 로컬 환경에 설치된 MySQL에 전혀 변경이 없다.

 

또 다른 예시로는 다음과 같은 경우가 있다.

내 로컬 환경에 MySQL 뿐만 아니라 MriaDB 같은 복수의 DB가 설치되어 있다고 하자.

이 경우 포트 번호가 중복될 수 있고, MySQL과 MriaDB 같은 경우에는 자칫 잘못하면 설정이 이상하게 공유되는 경우가 있을 수 있다.

 

도커로 MySQL을 띄우면 외부와 연결되는 포트번호를 지정해 줄 수 있고 독립적인 환경에서 실행되기 때문에 위와 같은 문제를 해결할 수 있다.

 

 

 

 

 

3. Docker로 MySQL 띄우기

3.1 Docker 설치

다음 페이지로 들아가서 Docker를 설치한다.

https://www.docker.com/products/docker-desktop/

 

Docker Desktop - Docker

MOST COMMON

www.docker.com

 

 

Docker가 잘 설치되었다면 터미널에 다음 명령어를 입력해서 설치된 Docker의 버전을 확인할 수 있다.

 

[Docker 버전 확인]

docker -v

 

[Docker 버전 확인 예]

 

 

 

 

3.2 MySQL 이미지 설치

도커에 MySQL의 이미지를 설치한다.

이미지란 해당 프로세스를 실행시키는데 필요한 설정과 파일들의 집합을 뜻한다.

 

[MySQL 이미지 다운]

docker pull mysql

 

 

 

이미지가 잘 다운받아지면 다음 명령어로 Docker에 다운된 이미지들을 확인할 수 있다.

 

[다운받아진 이미지 확인]

docker images

 

[다운받아진 이미지 확인 예]

 

 

 

도커의 대시보드에서도 내가 다운한 MySQL의 이미지를 확인할 수 있다.

 

[대시보드 이미지 확인]

 

 

 

 

 

3.3 MySQL 컨테이너 생성 & 실행

[MySQL 컨테이너 생성 & 실행]

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest

 

--name <container_name> : <container_name> 이름의 컨테이너를 실행한다.

-e : 컨테이너 내에서 사용할 환경변수를 설정

-e MYSQL_ROOT_PASSWORD=<password> : MySQL의 root 권한의 비밀번호를 <password>로 설정한다.

-d : detach 모드로 컨테이너가 실행된다. 컨테이너가 백그라운드로 실행된다고 보면 된다.

-p <호스트 포트> <컨테이너 포트> : 호스트와 컨테이너의 포트를 연결한다

mysql:latest : 컨테이너에 사용할 이미지

 

 

[MySQL 컨테이너 생성 & 실행 예시]

 

위와 같이 명령어를 입력하면  mysql-container 라는 이름으로 컨테이너가 생성된다.

또한 컨테이너 내부의 root 권한의 비밀번호는 1234로 설정된다.

그리고 호스트의 3305 포트가 컨테이너 내의 3306(MySQL의 포트번호) 포트로 연결된다.

 

혹시 호스트에 MySQL이 설치되어 있다면 포트번호가 겹치기 때문에 위의 예시처럼 컨테이너와 연결되는 호스트의 포트번호는 3306과 다른 번호로 지정해주는 것이 좋다.

 

 

 

컨테이너가 잘 생성되었다면 다음과 같은 명령어로 생성된 컨테이너들을 조회할 수 있다.

 

[컨테이너 목록 조회]

docker ps -a

 

[컨테이너 목록 조회 예시]

 

 

물론 대시보드에서도 확인할 수 있다.

[대시보드_컨테이너 조회]

 

 

 

 

 

4. 컨테이너의 MySQL 접속하기

다음과 같은 명령어를 터미널에 입력하면 컨테이너 환경에 bash로 접속할 수 있다.

 

[컨테이너 접속]

exec -it mysql-container bash

 

 

대시보드에서도 컨테이너와 연결된 터미널을 열 수 있다.

[대시보드_컨테이너 접속]

 

 

 

접속한 bash 환경에서 MySQL을 사용하면 된다.

 

[컨테이너의 MySQL 접속]

 

 

 

 

 

 

5. Workbrench에서 Docker에 띄워진 MySQL 연결하기

MySQLWorkbrench에서 Docker에 띄워진 MySQL을 연결해 본다.

 

우선 Workbrench에서 아래의 버튼을 눌러 새로운 연결을 시도한다.

 

[새로운 연결 생성]

 

 

 

다음과 같은 창이 뜨면 연결에 필요한 정보들을 입력한다.

 

[새로운 연결]

 

Connection Name : 연결의 이름

Hostname : 로컬 Ip 주소를 입력한다.

Port : 앞서 설정한 대로 3305 포트로 접속하면 컨테이너의 3306(MySQL)과 연결되므로 3305를 설정한다.

Username : 연결하는 MySQL에서 접속할 계정의 username을 적어준다.

                         특별히 컨테이너의 MySQL에 계정을 생성하지 않았다면 root를 입력한다.

 

 

 

 

이후에 Password : Store in Keychain... 을 눌러 MySQL에 접속할 계정의 비밀번호를 입력해준다.

 

[비밀번호 입력]

 

 

 

 

Test Conection을 실행해서 다음과 같이 연결에 문제가 없는지 확인한다.

 

[Test Conection]

 

 

 

 

모든 입력이 완료되면 ok를 눌러 연결을 생성한다.

 

[연결 생성]

 

 

 

 

연결이 잘되면 다음과 같이 새로운 연결이 Workbench에 생성된다.

 

[연결 생성]

 

 

 

 

해당 연결에 들어가면 연결에 사용된 MySQL의 계정 권한에 따라 DB를 조회, 수정을 할 수 있다.

 

[컨테이너 MySQL 조회, 수정]

 

 

 

 

'Web' 카테고리의 다른 글

ERDCloud 간단 사용법  (0) 2022.08.24
CORS  (0) 2022.08.10
웹 요청의 흐름  (2) 2022.08.08

댓글