DevOps/Docker

[Docker] MariaDB - docker로 관리하기

Henu 2021. 7. 29. 19:21
 

[Docker] Nginx 웹서버 구동해보기

컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이너.. 들어봤는데 무엇인지 잘 모르겠다..라고 생각하시는 분들을 위하여 이 글을 연재합니다. 1. Container 보..

hyeo-noo.tistory.com

이전 포스팅

 

 

mariadb 이미지 가져오기

$ docker pull mariadb:10.5

mariadb 10.5버전을 가져온다.

 

 

mariadb 컨테이너 생성

$ docker run -d --name mariadb -p 3306:3306 -v ${PWD}:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=1234 -e MARIADB_DATABASE=test  mariadb:10.5

 

mariadb 컨테이너를 생성하는 docker 명령어이다. 하나하나 살펴보자!

 

run : docker 이미지로 컨테이너를 실행하는 명령어.

 

-d : 백그라운드에서 컨테이너가 계속 실행되게 하는 옵션

 

--name mariadb : 컨테이너의 이름을 지정 (mariadb 라고 지정함)

 

-p 3306:3306 : 호스트 연결포트와 컨테이너 연결포트를 연결해준다. <host>:<container> 호스트의 3306과 컨테이너의 3306을 연결한다.

 

-v ${PWD}:/var/lib/mysql : ${PWD} (대문자 주의!)변수를 통해서 HOST(내 컴퓨터)의 터미널의 위치(폴더)와 컨테이너 내부의 /var/lib/mysql 을 연결한다. > <host>:<container>

위와 같이 Host부분에 경로를 연결한 경우 bind volume 이라고 한다.

PWD대신에 원하는 경로로 설정 가능하다.

docker 프로그램 내에서 허용하는 경로가 몇 개 지정되어있으니 유의하세요! (허용 경로 추가 가능) 처음엔 연습용으로 Desktop 폴더에 생성하는걸 추천합니다

현재 폴더와 /var/lib/mysql 폴더가 서로 연결되어서 파일을 완전히 공유한다고 생각하면 편하다.

 

-e MARIADB_ROOT_PASSWORD=1234 : root 패스워드를 1234로 설정.

 

-e MARIADA_DATABASE=test : 컨테이너를 만듦과 동시에 test라는 이름의 database를 만들어서 사용한다.

 

mariadb:10.5 : mariadb:10.5 이미지를 사용해서 컨테이너를 만든다.

 

 

컨테이너가 생성되었다면 842473cbca8edbe84776e400a1e328cca8218a79 같은 수상한 문자열이 한 줄 출력된다.

그럼 컨테이너 생성 성공이다

 

그리고 현재 폴더를 열어서 mariadb관련된 파일들이 생성되었는지 확인해보자! bind volume으로 연결했기 때문에 

저는 이런식으로 파일이 생겼습니다.

 

 

bind volume이란?

 

데이터를 저장하는 곳을 지정해주는 방법에 대해서 설명이 되어있다.

 

리눅스에서 mariadb로 컨테이너를 만들면 /var/lib/mysql 이라는 폴더에 저장이 된다.

그래서 bind volume을 통해서 내가 직접 눈으로 보고 관리할 수 있는 host의 특정 폴더와 연결을 해 줄 수 있다. - 매우 중요!

폴더와 폴더의 연결 뿐만 아니라 파일과 파일의 연결도 가능하다

 

mariadb 환경변수

 

컨테이너를 만들면서 환경변수를 설정할 수 있다.

MARIADB_ROOT_PASSWORD 변수는 처음에 설정해주기 바란다.

 

 

mariadb 컨테이너에 접속하기

우선 mariadb 컨테이너가 구동중인지 확인해 보고 구동중이 아니라면 구동시켜주자

// 실행중인 컨테이너 목록
$ docker ps

// 컨테이너 구동하기
$ docker start mariadb

 

실행중이라면 아래 명령어를 실행해보자

$ docker exec -it mariadb bash

아주 중요한 명령어가 등장했다.

 

exec : 현재 구동중인 컨테이너에 접속하는 명령어
-i , -t : 두 옵션은 같이 쓰이는 경우가 매우 많다. -it : interactive 하게 가상 tty를 통해 컨테이너에 접속하겠다는 의미를 가지고 있다.
mariadb : 접속하고자 하는 컨테이너 이름.
bash : exec을 통해서 컨테이너에 접속했을 때 bash shell을 실행하겠다는 명령어이다.

 

접속에 성공하면 터미널이 아래 그림처럼 바뀐다.

 

database 확인하기

 

여기부터는 docker의 영역이 아니지만 컨테이너를 만들면서 생성했던 database가 있는지까지만 확인해 보자

 

$ mariadb -uroot -p1234

root 계정을 사용하고 password는 1234로 mariadb에 접속한다.

 

데이터베이스에 성공적으로 접속했다!

 

> show database;

위 명령어를 실행했을 때 test 데이터베이스가 보인다면 성공이다!

 

이제 ctrl + c를 눌러서 mariadb에서 나가보자(컨테이너에서 나가는게 아님!)

그리고 (ctrl + p) + (ctrl + q) 를 순서대로 눌러서 컨테이너의 구동을 유지한 채로 컨테이너의 bash shell에서 빠져나올 수 있다.

만약 (ctrl + p) + (ctrl + q)대신에 exit 을 눌러서 나온다면 컨테이너의 구동까지 종료되니 알고있자!