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/
'서버,데스크탑 > EC2' 카테고리의 다른 글
[EC2] putty 로 접속 안되던 오류 해결 (0) | 2022.09.08 |
---|---|
[Docker] Docker daemon socket /var/run/docker.sock: connect: permission denied 오류 (0) | 2022.09.05 |
[EC2] AWS 관리 콘솔(웹브라우저)에서 EC2에 연결 못하는 오류 해결 (0) | 2022.08.29 |