본문 바로가기

Docker

2. Docker 를 이용해서 MySQL 버전별로 설치하기

번외편으로 ㅋㅋ Docker 를 어떻게 써먹어 볼까 하다

(예전에 발표했던)재미있는 시나리오를 하나 소개해볼까 한다!!



 개발자 1명이 팀에서 프로젝트를 2~3개 씩 진행한다고 가정해보자.

그런데 재.수. 가 없게도 각 프로젝트마다 사용하는 MySQL 버전이 다른것이다..

두둥...!!


Docker 가 없었다면 그 개발자는 MySQL 을 버전별로 다 로컬 피씨에 깔고,

다른 프로젝트 개발로 옮겨갈때마다 MySQL 의 Path 설정을 다시 하고,

껐다 키고 ... 영 번거로운 작업을 매번 해야 한다.


이를 도커를 이용해서 MySQL 여러 버전을 피씨에 깔고, 쉽게 실행시켜보자!




docker-machine 을 통해 virtual box 이미지 설치하기


docker-machine create


라고 치면 default  라는 이미지 / virtualbox driver 로 설치가 된다.

확인은 virtualbox 가면 확인이 가능하다.


- 실행화면 ( 나는 default 로 이미 설치한적이 있어 default2 라는 이미지 이름을 줌 )



docker-machine create --driver virtualbox default2
Running pre-create checks...
(default2) Default Boot2Docker ISO is out-of-date, downloading the latest release...
(default2) Latest release for github.com/boot2docker/boot2docker is v1.11.2
(default2) Downloading /Users/{{username}}/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v1.11.2/boot2docker.iso...
(default2) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...


설치된 가상 머신의 환경을 보려면


docker-machine env default2 --shell=zsh
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/{{username}}/.docker/machine/machines/default2"
export DOCKER_MACHINE_NAME="default2"
# Run this command to configure your shell:
# eval $(docker-machine env default2 --shell=zsh)




docker 에 이제 mysql (5.6 버전) 이미지를 이용해서 컨테이너를 띄워보자!


➜  ~ docker run --name mysql5.6 -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306  mysql:5.6
Unable to find image 'mysql:5.6' locally
5.6: Pulling from library/mysql
51f5c6a04d83: Already exists
a3ed95caeb02: Pull complete
260d7505d8f9: Already exists
a65f47c75fe3: Already exists
729d0217f8db: Already exists
6dcf95bf56d1: Pull complete
e9e6fbca5bcb: Pull complete
ee46e19ab7a2: Pull complete
f8c1edcfb009: Pull complete
624b64bce5c0: Pull complete
266b326b31d7: Pull complete
16434515d197: Pull complete
Digest: sha256:03646869dfecf96f443640f8b9040fbde78a96269aaf47bbfbb505a4c1adcad9
Status: Downloaded newer image for mysql:5.6
3fd48da6bad0c4259ff88d7b867538605ff0c2c6933e83039903b4e4c773930b


위의 명령어를 해석해 드리면 

mysql5.6 라는 컨테이너 이름으로 mysql 의 root 패스워드를 1234로 해서 mysql 5.6 버전의 이미지를 이용해 컨테이너를 띄워라!!!

 근데 바깥에서 접속하려면 host 의 port 를 container 의 port 로 포워딩 해줘야 하니 그 옵션이 -p 로 줍니다!

라는 의미 입니다. ㅎㅎ



하나만 더 확인하죠... ㅎㅎ


➜  ~ docker-machine ip default
192.168.99.100


전 워크 벤치로 connection 테스트를 할껀데 지금 도커가 돌고 있는데가

우리 로컬이 아닙니다! 정확하게 말하자면 우리 로컬의 VM 위에서 돌고 있는거죠 +_+


그러니까 mysql 에 connect 할때 정보를 VM 의 ip 정보를 적어주어야 합니다.

다 해놓고 워크 벤치에 가서 connect 테스트를 해보죠!




위와 같이 접속이 되는것을 확인 하실수 있습니다!








끝..... 인줄 알았죠? ㅋㅋㅋ

아까 우리의 목적!! 갑자기 다른 프로젝트에서 5.5 버전의 mysql 로 개발을 해야 하는 상황이 발생합니다!! 이런... J 같은 상황이 발생하면 GRGR 하겠지만... 우린 도커가 있으니 간단히 할 수 있죠 ㅎㅎ


➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
3fd48da6bad0        mysql:5.6           "docker-entrypoint.sh"   10 minutes ago      Up 10 minutes       0.0.0.0:3306->3306/tcp   mysql5.6
➜  ~ docker stop 3fd48da6bad0
3fd48da6bad0
➜  ~ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
3fd48da6bad0        mysql:5.6           "docker-entrypoint.sh"   10 minutes ago      Exited (0) 2 seconds ago                        mysql5.6
6ded72fd9ea5        mysql:5.5           "docker-entrypoint.sh"   12 minutes ago      Exited (0) 11 minutes ago                       mysql5.5
➜  ~ docker start 6ded72fd9ea5
6ded72fd9ea5
➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
6ded72fd9ea5        mysql:5.5           "docker-entrypoint.sh"   12 minutes ago      Up 5 seconds        0.0.0.0:3306->3306/tcp   mysql5.5


화살표의 숫자만큼 명령어를 5개를 친겁니다.

1. docker ps 를 통해 현재 돌고 있는 도커 프로세스를 확인

2. 해당 컨테이너를 stop 시켜줌

3. 모든 컨테이너를 검색 ( -a 옵션을 통해... )

4. 5.5 버전의 mysql 컨테이너 실행!

5. 잘 도나 확인후 workbench 에서 접속!! 

하면 아마 잘 될겁니다 ㅋㅋㅋ



아!! 3번 과정에서 저같은 경우 mysql 5.5 이미지를 미리 깔아놔서 그런건데;;

안까신 분들은 3,4 번의 과정 대신에  아래와 같이 5.5 버전을 까시면 됩니다!! ^^


➜  ~ docker run --name mysql5.5 -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306  mysql:5.5
Unable to find image 'mysql:5.5' locally
5.5: Pulling from library/mysql
51f5c6a04d83: Already exists
a3ed95caeb02: Pull complete
260d7505d8f9: Already exists
a65f47c75fe3: Already exists
729d0217f8db: Already exists
6dcf95bf56d1: Pull complete
e9e6fbca5bcb: Pull complete
ee46e19ab7a2: Pull complete
f8c1edcfb009: Pull complete
624b64bce5c0: Pull complete
266b326b31d7: Pull complete
16434515d197: Pull complete
Digest: sha256:03646869dfecf96f443640f8b9040fbde78a96269aaf47bbfbb505a4c1adcad9
Status: Downloaded newer image for mysql:5.6
3fd48da6bad0c4259ff88d7b867538605ff0c2c6933e83039903b4e4c773930b



그럼 이제 진짜 끝!!! ㅎㅎ