AWS EC2 서버에 설치된 도커에, MariaDB를 설치해보도록 하겠다.

 

1. DB 이미지를 받아온다 (docker pull)

docker pull [이미지명:태그]

 

아래는 최신버전의 mariadb 이미지를 받아오는 명령이다.

# sudo docker pull mariadb

특정 버전을 받고 싶다면, [:버전태그] 를 추가해준다.

사용 가능한 버전은 https://hub.docker.com/ 여기서 확인 가능하다.

# sudo docker pull mariadb:10.8

 

2. DB 이미지를 컨테이너로 실행한다. (docker run)

docker run --name [컨테이너 이름] -e [환경변수=값] -d -p [포트:포트] -v [호스트 디렉토리:컨테이터 디렉토리] [이미지명:버전태그]

 

아래는 mariadb-container라는 컨테이너 이름으로 mariadb:latest 이미지를 실행하는 예이다.

# sudo docker run --name mariadb-container -e MYSQL_ROOT_PASSWORD=wordpress -d -p 3306:3306 -v /home/username/volume/mysql:/var/lib/mysql mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
※ 옵션 설명
--name
: 생성할 컨테이너 이름
-e : 환경변수 (password) 설정
-d : Dispatch mode (백그라운드에서 실행)
-p : 포트 연결 (외부포트: Docker 내부포트)
mariadb:latest : 컨테이너로 실행할 이미지 이름 
-v : 디렉토리 마운트. 호스트 디렉토리를 컨테이너의 디렉토리로 마운트
▶ docker에 DB를 설치하는 경우, 컨테이너를 삭제하면 데이터도 함께 날아가므로, 저장소는 꼭 외부 저장소(호스트 디렉토리)를 마운트하여 사용해야 한다
▶ 호스트 디렉토리는 EC2 서버에 존재하는 디렉토리이다. (원하는 경로를 마운트 해주면 된다.)
▶컨테이너 디렉토리 경로로 지정한 /var/lib/mysql 는 일반적으로 mysql 데이터파일이 저장되는 경로이다.
▶즉, 도커에 설치된 DB는 /var/lib/mysql 폴더에 데이터를 저장하는데, 이 폴더가 호스트 디렉토리에 마운트 되어 있으므로 실제 데이터가 호스트 디렉토리에 저장이 되게 됨. 따라서 컨테이너를 삭제 해도 호스트 디렉토리에 DB 데이터가 남아있을 수 있게 된다.
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci : 한글이 깨지지 않도록 설정하기 위한 인자값

 

3. 컨테이너에 접속하기 (docker exec)

docker exec -it [컨테이너명] bash

 

실행중인 mariadb-container에 접속하여, bash shell에서 커맨드를 실행할 수 있다.

#sudo docker exec -it mariadb-container bash
※ 옵션 설명
-it : -i interactive 옵션과 -t Pseudo-tty 옵션을 함께 준 것으로, bash shell에서 입/출력을 가능하게 해주는 옵션이다.

 

4. MysqlWorkbench로 DB 접속해보기

- hostname엔 도커가 실행되는 서버의 IP를 입력한다. (workbench와 같은 컴퓨터에서 실행되면 127.0.0.1로 그냥 두고, 다른 서버에서 실행중이라면 다른 서버의 공인 IP를 입력)

- Store in Vault ... 를 클릭해서 비밀번호 넣어주고

- Test Connection 해보면 정상 연결이 된다. [OK] 누르면 접속 됨

 

 

참고

http://jmlim.github.io/docker/2019/07/30/docker-mysql-setup/

+ Recent posts