Docker 사용해서 MariaDB 설치하기

nooori·2024년 7월 3일
post-thumbnail

Vue.js로 쇼핑몰 미니 프로젝트를 하면서 제품 데이터를 어떻게 관리하나 고민하던 중, mariadb라는 것을 사용해보기로 했다. 몇 번 들어본 적은 있었는데 한 번도 실제로 사용해본 적은 없어서 이번 기회에 기능을 익히고 데이터베이스 관리에 대한 이해를 높이고자 한다.

Docker?

MariaDB 사용하려고 설치를 시도해보던 중에 Docker를 사용하면 쉽게 설정하고 실행할 수 있다는 글을 보고 Docker를 사용해보기로 했다. Docker란 어플리케이션을 컨테이너라는 가벼운, 이식 가능한 환경에서 실행할 수 있도록 해주는 플랫폼이다. 이 플랫폼은 어플리케이션과 그 의존성을 하나의 패키지로 묶어 일관된 환경에서 실행할 수 있도록 도와준다고 한다. 사실, 텍스트로 읽기만 해서는 감이 안와서 그냥 일단 사용해보자!

먼저 아래 docker 공식 홈페이지에서 windows 버전의 docker를 다운받았다.
https://docs.docker.com/guides/getting-started/get-docker-desktop/

그리고 powershell terminal을 열어 아래 명령어를 입력해서 docker로 mariadb를 다운받았다.

docker pull mariadb

이 명령어를 실행하면 mariadb를 다운로드하게 되는데 다른 옵션을 주지 않았기 때문에 최신 버전이 다운된다.

그리고 정상적으로 다운이 되었는지 docker image ls 명령어를 사용해서 확인해보면 최신 버전으로 잘 다운로드 된 것을 확인할 수 있다

그럼 이제 다운받은 MariaDB를 컨테이너로 실행해보자!

docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb mariadb

docker run은 docker 컨테이너를 실행하는 명령이고 'mariadb'로 컨테이너 이름을 지정한 다음 다른 옵션들을 주었다. -d는 백그라운드에서 실행하겠다는 것이고 호스트 포트 3306을 컨테이너 포트 3306과 연결한다. 그리고 컨테이너 내에서 사용할 환경 변수를 설정하는데 이때 루트 비밀번호를 mariadb로 설정했다. 마지막의 mariadb는 실행할 docker의 이미지 이름이다. 이 명령어를 실행하면 Docker는 MariaDB 이미지를 다운로드하고 백그라운드에서 컨테이너를 실행하게 된다.

그리고 docker ps 명령어를 입력해서 현재 실행 중인 Docker 컨테이너의 목록을 확인한다.

MariaDB 컨테이너가 정상적으로 실행 중인 것을 확인 했으니 이제 MariaDB에 접속해보자!

먼저, 아래 명령어를 사용해서 Docker 컨테이너 내부로 직접 접속하고 bash 셸을 실행한다.

docker exec -it mariadb /bin/bash

명령어를 입력하면 root@cfc284d6cbb4:/#가 뜨는데 cfc284d6cbb4는 MariaDB 컨테이너의 고유한 ID이다.

이제 bash 셸에서 MariaDB 서버에 접속하기 위한 명령어를 입력하면 된다. 그래서

mysql -u root -p

명령어를 입력했는데!!

mysql: command not found라고 mysql을 사용할 수 없다는 문구가 떴다😲

왜 이런 문제가 발생하는 건지 찾아보니 컨테이너 내부에 mysql 명령어가 실행되지 않는 경우거나 MariaDB 클라이언트가 제대로 된 위치에 설치되지 않았다면 이럴 수 있다고 한다. which mysql를 사용해서 mysql 명령어가 있는지 확인했는데 아무것도 뜨지 않았다.

그래서 아래 명령어를 입력해서 MariaDB 클라이언트를 설치해보았다.

apt-get update
apt-get install mysql-client

잘 설치된 것 같아서 아까 bash 셸을 실행하고 MariaDB에 접속하는 두 명령어를 합쳐서 한 번에 입력했더니 패스워드를 입력하라는 문구가 나왔고 아까 설정했던 'mariadb'를 입력했다.

docker exec -it mariadb mysql -u root -p

성공적으로 MariaDB에 접속했다는 것을 확인할 수 있었다😚 사실, mysql 명령어가 작동하지 않아서 MYSQL 클라이언트를 설치하는 과정에서도 꽤 많은 시간 동안 애를 먹었다. 그래도 결국에는 접속할 수 있어서 다행이고 뿌듯하다.

0개의 댓글