[Docker] 도커 볼륨

Parker cho·2022년 5월 19일
1

도커

목록 보기
2/4
post-thumbnail

개요

도커 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 되며 컨테이너의 변경 사항은 별도로 저장해서 각 컨테이너의 정보를 보존함.

이미지와 컨테이너 구조

생성된 이미지는 어떠한 경우에도 변경되지 않음. 하지만 이러한 구조에는 치명적인 단점이 있는데 컨테이너를 삭제하면 내부에 있는 데이터가 모두 사라진다는 것임.

이를 방지하기 위해 컨테이너의 데이터를 영속적 데이터로 활용할 필요성이 있음.

볼륨 공유

호스트 볼륨 공유

docker run -d \ 
--name {name}
-v {local_host_volume_path}:{docker_volume_path}

이때 호스트의 디렉터리가 존재하지 않아도 도커는 자동으로 폴더를 생성해줍니다!

이때 local_host_volume 과 docker_volume_path 는 동기화 되어있는 폴더가 아니고 완전히 같은 폴더임.

정확히는 -v 옵션을 통한 호스트 볼륨 공유는 호스트의 디렉터리를 컨테이너의 디렉터리에 마운트함

docker volume 과 host volume 구조

볼륨 컨테이너

볼륨을 사용하는 컨테이너를 다른 컨테이너와 공유하는 방법 --volumes-from 옵션을 설정하면 -v 또는 --volume 옵션을 적용한 컨테이너의 볼륨 디렉터리를 공유할 수 있음

docker run -i -t \ 
--name volumes_from_container \ 
--volumes-from volume_override \ 
ubuntu:14.04

volume_override 컨테이너는 host와 볼륨을 공유하고 volumes_from_container 는 volume_override 컨테이너와 볼륨을 공유함

결국에는 두 컨테이너가 같은 볼륨을 공유하는 것임

도커 볼륨

도커 자체에서 제공하는 볼륨 기능을 활용해 데이터를 보존하는 방법

# 도커 볼륨 생성
docker volume create --name testVolume

# 도커 볼륨 확인
docker volume ls

호스트와 볼륨을 공유할 때 사용한 -v 옵션의 입력과는 다르게 다음과 같은 형식으로 입력해야 함

docker run -i -t --name myvolume_1 \
-v myvolume:/root/ \
ubuntu:14.04

docker inspect 명령어를 사용하면 생성한 볼륨이 실제로 어디에 저장되는지 알 수 있음

# docker inspect --type volume testVolume

docker volume create 명령을 별도로 입력하지 않아도 -v 옵션을 입력할 때 이를 수행하도록 설정 할 수 있음

docker run -i -t --name volume_auto \ 
-v /root \
ubuntu:14.04
profile
true nobility is being superior to your former self

0개의 댓글