본문 바로가기

프로젝트 설정/Docker

[Docker] mariadb install (mariadb image 사용)

반응형

 

도커 컨테이너에 db를 설치할 경우 3가지 방법이 있다.

그중 mariadb image를 이용해서 설치해보고자 한다. (제일 쉽다.)

 

1. mariadb image 사용

2. 다른 image 사용

3. run을 하고 있는 도중 mariadb install

0. docker?

더보기

1. install docker mairadb image

https://24hours-beginner.tistory.com/277

 

[Docker] Docker 사용기 (python)

설명은 잘되어있는곳이 너무 많다. 그저 이것은 도커 초보의 docker 사용내역이다. 1. image 파일 찾기 1.1. 도커 허브에서 원하는 이미지를 찾는다. https://hub.docker.com/_/python?tab=tags&page=1&name=3.7..

24hours-beginner.tistory.com

docker pull mariadb

2. docker volume 생성

생선 전 읽어보면 좋은 사이트

https://joonhwan.github.io/2018-11-14-fix-mysql-volume-share-issue

 

Docker Volume 개념 및 MySql을 Docker상에서 운용하는 방법

MySQL image를 docker로 실행할 때, 이전 실행시 가지고 있던 정보를 유지하려면, docker volume을 사용해야 한다. Docker Volume 특징 및 암시적 생성/제거 docker volume은, docker에서 디스크에 무언가를 기록할

joonhwan.github.io

volume 조회

docker volume ls

volume 생성

 docker volume create [volume name]
 docker volume create database

volume 상세 정보 보기

docker volume inspect [volume name]
docker volume inspect database

볼륨의 실제 경로 : Mountpoint

volume 삭제

docker volume rm [Volume name]
docker volume rm database

3. docker run (+ volume 연결)

docker run 주의사항

포트랑 volume 등은 run할때만 적용이 가능함으로 이런 옵션들을 사용한다면 꼭꼭 적용해주어야 한다.

container와 volume의 상관관계

더보기

https://docs.docker.com/engine/reference/run/#clean-up---rm

1. container가 삭제되어도 volume은 유지 된다.

즉 volume을 삭제하고 싶다면 docker volume rm 으로 삭제해줘야한다.

(또는 prune 옵션 (사용되지 않는 볼륨 모두 삭제 Remove all unused local volumes)

 

2. run을 할 때 --rm 옵션을 줄 경우 "익명" volume만 자동으로 삭제 된다고 한다. (이름을 명명해 주었을때에는 삭제되지 않음)

참고) 다른 컨테이너가 로 볼륨을 바인딩하면 볼륨 --volumes-from정의가 복사 되고 첫 번째 컨테이너가 제거된 후에도 익명 볼륨이 유지됩니다.

https://docs.docker.com/storage/volumes/#remove-anonymous-volumes

 

3. container가 바뀌어도 (삭제 후 start 하는 경우 등) 같은 volume에 연결하고 싶은 경우 volume을 생성하여 연결하거나 volume옵션에 꼭 명명을 해주어야 한다.

 

-v 옵션을 주지 않거나 -v 옵션을 주었으나 익명으로 하였을때 (ex) docker run -v :/test mariadb) container가 삭제되는 경우 같은 이미지로 시작을 한다고 하여도 데이터가 들어있던 volume과는 연결이 끊겨 데이터가 보존되지않는다.

그러므로

데이터를 보존해야하는 경우 volume의 이름을 명명해주어야한다.


docker run -v (또는 --mount) 옵션

더보기

docker run -v 옵션의 기능은 조금 많은 듯 하다.

1. 볼륨 마운트 volume mount : Docker에서 관리하는 Volume과 연결하는 것.

볼륨명을 적어줍니다.

2. 바인드 마운트 bind mount : Host의 폴더 구조와 연결하는 것.

호스트의 경로를 적어줍니다.

3. tmpfs mount : 메모리에 직접 (리눅스에서 램디스크를 사용) 연결하는 것. (램디스크의 내용은 기기의 전원이 꺼지면 삭제되므로 주의해서 사용하여야 합니다.)

램디스크 설정 후 경로

 

그러므로 옵션을 줄때는 어떠한 방식으로 어떠한곳에 저장할지를 고민하여 옵션을 주어야한다.

 

https://docs.docker.com/storage/volumes/

 

Use volumes

 

docs.docker.com

docker volume의 사용방법과 차이점

 

Pilsner Blog - 그냥 블로그...

docker를 계속 사용하다 보면 container의 데이터 휘발성 때문에 volume을 사용하게 됩니다. volume 사용할 수 있는 방법은 대표적으론 4가지 정도가 있습니다 이번에는 이 방법들 소개와 그 차이에 대해

darkrasid.github.io


docker run

# 컨테이너 실행
sudo docker run -itd [이미지 이름]

# 포트 없이 기본
sudo docker run -itd --name [컨테이너 이름] -e MYSQL_ROOT_PASSWORD=[데이터베이스 루트 비밀번호] [이미지 이름]

# 포트 연결
sudo docker run -itd -p [내부포트]:[도커포트] --name [컨테이너 이름] -e MYSQL_ROOT_PASSWORD=0000 [이미지 이름]
sudo docker run -itd -p 13306:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=0000 mariadb


# volume 연결
sudo docker run -itd -v [볼륨 이름]:[컨테이너 내부 폴더] -p [내부포트]:[도커포트] --name [컨테이너 이름] -e MYSQL_ROOT_PASSWORD=0000 [이미지 이름]

# 예시
sudo docker run -itd -v database:/var/lib/mysql -p 13306:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=0000 mariadb

실행할때 실행할 이미지는 꼭 맨 뒤에 적어줘야 한다.

 

run 옵션

  • i : Interactive 모드로 표준입력과 표준출력을 키보드와 화면을 통해 가능하도록 하는 옵션이다.
  • t:  텍스트 기반의 터미널(TTY)을 애뮬레이션해주는 옵션이다.
  • d: 백그라운드 모드 실행하는 옵션이다.
  • p 운영체제포트:컨테이너포트 : 포트 부여
  • --name 실행하는 컨테이너 이름 명명
  • -e : env 환경변수 설정
  • -v : 볼륨명명

4. 정상 실행 확인 docker ps

docker ps -a

5. 접속 docker exec

sudo docker exec -it mariadb bash
sudo docker exec -it mariadb mysql -uroot -p

 

6. 본인 환경에 맞도록 timezone, characterset 등 설정하기~

 

참조

https://docs.docker.com/storage/volumes/

 

Use volumes

 

docs.docker.com

https://docs.microsoft.com/ko-kr/visualstudio/docker/tutorials/persist-your-data

 

Docker 자습서 - 5부: 데이터 유지

볼륨을 탑재하여 데이터베이스 및 공유 디렉터리의 데이터를 컨테이너에 보관하는 방법을 알아봅니다.

docs.microsoft.com

https://www.joinc.co.kr/w/man/12/docker/Guide/DataWithContainer

 

도커 컨테이너 데이터 볼륨 관리

백업, 복구, 마이그레이션

www.joinc.co.kr

https://stackoverflow.com/questions/28302178/how-can-i-add-a-volume-to-an-existing-docker-container

 

How can I add a volume to an existing Docker container?

I have a Docker container that I've created simply by installing Docker on Ubuntu and doing: sudo docker run -i -t ubuntu /bin/bash I immediately started installing Java and some other tools, spen...

stackoverflow.com

https://docs.docker.com/engine/reference/commandline/cp/

 

docker cp

docker cp: The `docker cp` utility copies the contents of `SRC_PATH` to the `DEST_PATH`. You can copy from the container's file system to the local machine or the reverse, from...

docs.docker.com

https://www.daleseo.com/docker-volumes-bind-mounts/

 

Docker 컨테이너에 데이터 저장 (볼륨/바인드 마운트)

Engineering Blog by Dale Seo

www.daleseo.com

 

반응형