안녕하세요,
아과노트 입니다.
이번에는 지난번 설치한 도커에 MariaDB를 올려볼까 합니다.
도커를 왜 사용하는지와 설치 방법은 다음 문서들을 확인해 주세요
2023.06.26 - [도커(Docker)] - 도커(Docker)란 무엇이고, 컨테이너란 무엇인가? (Docker의 정의, 공식문서 기준) / 아과노트
기존에는 보통 서버에 바로 DB를 설치했는데요...
도커는 놀랍게도 DB도 컨테이너로 제공해 줍니다.
기존 서버는 DB에 하나의 버전만 설치가 가능했지만
도커를 사용하면 여러 버전의 DB도 컨테이너만 다르게 해서 설치가 가능합니다.
기존 서버는 서버에 DB를 보통 한개만 설치하지만
도커를 사용하면 다른 버전의 DB를 여러개 설치도 가능합니다!
이것은 엄청난 장점입니다.
-아과노트-
그러면 어떻게 설치하는지 알아보도록 하겠습니다.
오늘의 공식문서는 다음과 같습니다.
https://hub.docker.com/_/mariadb
MySQL과 MariaDB중 항상 무엇을 설치할지 고민이 되는데요..
그래도 좀 더 라이센스 문제에 자유로운 MariaDB가 좋을것 같아서 MariaDB를 먼저 설치해볼까 합니다.
1. 기본 사용법: docker run 이용
공식문서에서 사용하는 가장 기본적인 사용법은 다음과 같습니다.
$ docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
여기서 필수적인 것만 남긴다면 다음과 같이 MARIADB_ROOT_PASSWORD만 넣어서 생성할 수 있습니다.
$ docker run --detach --name some-mariadb --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
2. 기본 사용법: docker compose 이용
공식문서에서 사용하는 docker compose는 다음과 같습니다.
아래의 글을 docker-compose.yml 파일로 만들어 주세요.
vi docker-compose.yml
그리고 아래의 내용을 복사하여 붙여너어 주시면 됩니다.
# Use root/example as user/password credentials
version: '3.1'
services:
db:
image: mariadb
restart: always
environment:
MARIADB_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
다 작성했으면
:wq 를 눌러서 저장하고 나옵니다.
위의 yml 파일을 설명을 드리자면 docker compose로 두개의 서비스를 띄웁니다.
db와 adminer 를 띄웁니다.
db의 image는 mariadb를 사용하고(image: mariadb)
restart 옵션을 통해서 오류가 발생시 항상 다시 실행이 되도록 셋팅합니다(restart: always)
그리고 환경 변수로(environment) MARIADB_ROOT_PASSWORD 를 셋팅합니다.
adminer는 8080포트로 admin 관리자 페이지를 띄웁니다
자세한 내용은 다음 공식문서를 읽어주세요.
여기서는 adminer는 생략하도록 하겠습니다.
https://hub.docker.com/_/adminer
3. docker compose 실행
docker compose를 실행하는 방법은 다음과 같습니다.
아까 만들었던 docker-compose.yml 파일의 위치에 가서 아래의 명령어를 넣어 주세요
docker compose up -d
-d의 의미는 데몬으로 실행한다는 의미입니다. 즉, 백그라운드에서 실행하겠다는 뜻입니다.
4. Mariadb의 저장 위치(volume) 설정하기
볼륨을 설정하기 위해 바인딩 볼륨 방식을 이용하도록 하겠습니다.
docker-compose.yml에 다음을 추가해 주세요.
volumes:
- ./data/mysql/:/var/lib/mysql
전체 docker-compose.yml은 다음과 같습니다.
# Use root/example as user/password credentials
version: '3.1'
services:
db:
image: mariadb
restart: always
environment:
MARIADB_ROOT_PASSWORD: example
volumes:
- ./data/mysql/:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
이렇게 하면 ./data/mysql에 mariadb의 데이터가 차곡차곡 쌓이는 것을 볼 수 있습니다.
볼륨 설정은 꼭 필요합니다. 왜냐하면 container는 언제든 삭제되고, 재생성 될 수 있습니다.
그때 data를 보존하기 위해서는 반드시 볼륨을 설정해서 특정 위치에 지속적으로 데이터를 쌓을수 있도록 셋팅이 필요합니다. 이런 부분이 바로 volume 설정입니다.
DB를 컨테이너로 올릴때는 반드시 데이터 영역을 Volume으로 셋팅해 주세요
-아과노트-
오늘은 여기까지 입니다.
이제 DB도 도커를 이용해서 컨테이너로 띄울 수 있습니다.
데이터 삭제 걱정도 없이 안전하게 ㅎㅎㅎ
여러분도 DB를 컨테이너로 올려보세요
그럼 다음에 뵙겠습니다.