본문 바로가기
카테고리 없음

Docker를 이용한 MySQL 설치 방법

by 왕 달팽이 2019. 5. 19.
반응형

도커 환경에서 MySQL을 구동해보자. 간단하기 DB 연동 테스트를 할 때, 별도의 머신을 할당받아 MySQL을 설치하는 것보다 간단하게 도커를 이용해 MySQL을 설치하는게 편리 할 수 있다.

우선 도커는 설치되어 있다고 가정하겠다. 다음 명령어를 이용해 MySQL 도커 이미지를 가져온다.

$ docker pull mysql

이 명령을 실행하면 도커 허브에서 MySQL 최신 버전 이미지를 다운로드한다. (만약 특정 버전의 이미지를 다운로드하려면 'docker pull mysql:5.5' 같이 버전을 명시하면 된다.)

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               latest              990386cbd5c0        9 days ago          443MB

MySQL 도커 이미지가 제대로 다운로드 되었는지 'docker images' 명령으로 확인한다. 원하는 버전의 MySQL 도커 이미지가 제대로 다운로드 되었으면 이제 도커 이미지를 구동한다.

$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<비밀번호> --name dave-mysql mysql:latest
80bfeb8d1490e8962fa25e51a6d073b086507dbd906635c329d064a224354666

도커 컨테이너를 실행시키는 명령어는 나중에 도커를 다룰 때 따로 설명하겠다. 여기에서 사용한 옵션을 간단하게 설명하자면, run 명령이 이미지를 컨테이너로 구동시키는 도커 명령이다. -d 옵션은 데몬으로 동작하도록 설정하는 부분이고, -p 옵션은 포트포워딩(port forwading) 설정이다. 컨테이너 내부에 떠있는 프로세스가 사용하는 3306포트를 도커가 떠있는 호스트 머신의 3306으로 연결시켜주는 것이다. -e 옵션은 컨테이너 환경에 설정할 환경 변수 세팅이다. 여기에서는 mysql에서 사용할 루트 비밀번호와 관련된 환경변수를 설정했다. 그 다음 컨테이너의 이름을 설정하는 --name 옵션과 이미지 이름이 온다.

이제 컨테이너가 제대로 수행되었는지 다음 명령으로 확인한다.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                   PORTS                               NAMES
80bfeb8d1490        mysql:latest        "docker-entrypoint.s…"   About a minute ago   Up About a minute        0.0.0.0:3306->3306/tcp, 33060/tcp   dave-mysql

제대로 수행되었으면 컨테이너에 접속해보자.

$ docker exec -it dave-mysql bash
root@80bfeb8d1490:/# 

이 명령을 수행하면 도커에서 구동된 컨테이너에 접속할 수 있다. 접속이 되면 마치 ssh로 접속한 것처럼 루트 권한의 터미널 환경이 만들어진다. 이제 구동된 mysql 서버에 붙어보자.

접속한 컨테이너 환경에서 'mysql -u root -p 를 입력한다. 그리고 MySQL 컨테이너를 구동할 때 환경변수로 입력했던 비밀번호를 입력한다.

root@80bfeb8d1490:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.16 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

성공적으로 붙었다. 이렇게 간단하게 MySQL 서버를 띄워볼 수 있다. 물론 이렇게 띄워놓으면 볼륨 설정이되어 있지 않기 때문에 컨테이너가 내려가거나 지워지면 데이터베이스에 저장한 내용을 접근할 수 없게 된다. 운영용으로 사용하려면 그런 문제들을 해결해야한다.

반응형

댓글