Docker Volume은 왜 필요한가?
- 어플리케이션 구동시 컨테이너 자체에 데이터가 쌓이는데, 컨테이너 삭제 시 내부의 저장된 정보도 사라짐
- 컨테이너의 생명 주기와 관계없이 데이터를 영속적으로 활용하기 위해 볼륨 활용
- 컨테이너가 외부에 저장된 데이터로 동작하게 하는 방식을 Stateless한 컨테이너 설계 방식이라고 함
Docker Volume 활용 (1) Docker Volume
Docker 내에 볼륨 공간 생성 (일반적으로 /var/lib/docker/) 및 컨테이너 마운트에서 관리
특징
- 하나의 정의된 볼륨을 여러 개의 컨테이너에 공유 및 활용
- Volume을 정의하고 연결하여 사용하기 때문에 직접 관리시 번거로움
- 커스텀 폴더 구조화가 힘듬 (위치가 일반적으로 고정되어있으니 내가 직접 폴더 구조 생성 seonmin/ 등 이 힘듬)
Docker Volume 직접 생성 및 연결
docker volume create –name myvolume
docker volume inspect myvolume # 볼륨 실제 위치 등 확인 가능
# [볼륨의 이름]:[컨테이너의 공유 디렉토리
docker run –I –t –name mycontainer –v myvolume : /root/ # 컨테이너 생성 및 도커의 myvolume을 컨테이너의 /root 에 매핑
Docker Volume 활용 (2) Docker Host volume 관리
사용자(Host) Volume을 컨테이너와 공유하는 방식
Docker Host Volume 연결
# /home/wordpress_db의 호스트의 디렉터리와 컨테이너의 /var/lib/mysql 디렉터리를 공유
docker run –v [호스트의 공유 디렉터리] : [컨테이너의 공유 디렉터리]
docker run –d –v /home/wordpress_db : /var/lib/mysql
특징
- Host의 디렉터리를 Conatiner의 디렉터리에 마운트
- 직접 관리시 명료하게 관리 가능 (커스텀 폴더 구조화 등)
- ex) s3를 mount하여 /mnt/s3 밑에 저장 하고 이를 Container와 연결하는 방식
- (주의점) 두 디렉토리 모두 파일이 존재한다면 (a.txt, b.txt) 호스트의 디렉토리로 덮어 쓰게 됨
Docker Volume 활용 (3) 볼륨 전용 컨테이너 -volumes-from 활용
Volume이 공유되어지고 있는 하나의 Container를 '볼륨 전용 컨테이너'로 활용
특징
- 하나의 container가 다수의 volume을 매핑시, 해당 container를 볼륨 전용 컨테이너로 활용
- 호스트에서 Volume만 공유하고 별도의 역할을 담당 X
Volume 전용 Container 연결
(1) 호스트의 /home/wordpress_db를 컨테이너의 /var/lib/testdir에 볼륨 연결
Docker run –i –t –-name volume_override –v /home/wordpress_db : /home/testdir_1
(2) 호스트의 볼륨과 볼륨 전용 컨테이너를 거친 volume_overrid에 볼륨 연결
Docker run –i –t –name mycontainer –volumes-from volume_override
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker-compose란? (작동 구조, yaml 구성) (1) | 2022.08.17 |
---|---|
[Docker] Docker Network 종류 (0) | 2022.08.17 |
[Docker] Dockerfile 빌드 과정, 문법 정리, Docker Layer (0) | 2022.08.16 |
[Docker] Docker, Docker-compose 명령어 (0) | 2022.08.16 |
[Docker] Docker 란? (chroot, 생명주기 등) (0) | 2022.08.16 |