도커 볼륨이란
컨테이너의 특정 폴더를, 호스트 시스템(OS)에 연결해, 컨테이너가 삭제되더라도, 데이터를 유지할 수 있도록 하는 것( docker가 자동으로 host 경로 설정 )
1. 호스트 볼륨
호스트의 디렉토리를 컨테이너의 특정 경로에 마운트 한다.
$ docker run -ti -d -v $(pwd)/test.txt:/home/ubuntu/test.txt ubuntu
위의 명령어로는 pwd로 현제 경로에 있는 test.txt 파일을 실행할 ubuntu 컨테이너의 /home/ubuntu/ 경로에 마운트를 하겠다는 의미이다.
2. 볼륨 마운트
특정 컨테이너의 볼륨 마운트를 공유할 수 있다.
$ docker run \
-d \
-it \
-v $(pwd)/html:/usr/share/nginx/html \
--name web-volume \
ubuntu:focal
위의 명령어는 현재 경로에 있는 html 파일을 ubuntu:focal 컨테이너의 /usr/share/nginx/html 경로에 마운트 해주고 실행 컨테이너 이름은 web-volume라고 지정해주겠다
$ docker run \
-d \
--name parkminhyeok-nginx \
--volumes-from web-volume \
-p 80:80 \
nginx
위의 명령어는 parkminhyeok-nginx라는 이름으로 지정하고 --volumes-from을 사용하여 -v를 사용한 컨테이너의 볼륨 디렉터리를 공유할 수 있다.
docker inspect web-volume를 한다면 위의 그림처럼 마운트 된 걸 확인할 수 있다
docker inspect parkminhyeok-nginx를 한다면 web-volume 컨테이너의 볼륨 디렉터리를 공유하는 걸 확인할 수 있다
3. 도커 볼륨
도커가 제공하는 볼륨 관리 기능을 활용하여 데이터를 보존한다
$ docker volume create --name db

db 라는 이름을 가진 도커 볼륨을 생성한다 docker volume ls로 생성 확인
$ docker run -d \
--name minhyeok-mysql \
-e MYSQL_DATABASE=minhyeok \
-e MYSQL_ROOT_PASSWORD=minhyeok \
-v db:/var/lib/mysql \
-p 3306:3306 \
mysql:5.7
-e는 환경변수로 mysql 컨테이너는 MYSQL_DATABASE, MYSQL_ROOT_PASSWORD를 환경변수로 지정해줘야 컨테이너가 실행된다 -v db:/var/lib/mysql 은 위에서 만들어준 db 볼륨을 사용할 수 있다.

docker volume inspect db 명령어를 입력하면 호스트상 어떤 경로에 있는지 확인 할 수 있다
$ sudo ls -l /var/lib/docker/volumes/db/_data
위의 코드를 입력하면 경로에 mysql의 정보들이 잘 담아져있는걸 확인할 수있다.
기술 출처
https://docs.docker.com/reference/
Reference documentation
docs.docker.com
'DevOps > Docker' 카테고리의 다른 글
[Docker] GitHub Actions으로 docker CI (도커캐시) (0) | 2023.01.12 |
---|---|
[Docker] ubuntu에서 docker & docker-compose 설치 방법 (0) | 2022.12.30 |
[Docker] docker 이미지 생성하기 (0) | 2022.12.12 |
[Docker] docker 로그 확인하기 (0) | 2022.12.05 |
[Docker] docker run 주요 옵션 (0) | 2022.12.05 |