도커 볼륨

2023. 10. 23. 02:13쿠버네티스/Docker

728x90
반응형

호스트 볼륨 공유

docker run -d --name db -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -v /home/wordpress_db:/var/lib/mysql mysql:5.7

docker stop db
docker rm db
ls /home/wordpress_db

db 컨테이너를 삭제 했지만 공유된 데이터는 삭제가 안됩니다. 호스트 디렉터리와 동기화되는 것이 아니라 완전히 같은 디렉터리입니다.

출처 : chobel.log

 

[Docker] 도커 볼륨

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

velog.io

호스트에 이미 디렉터리와 파일이 존재하고 컨테이너에도 존재할 때 두 디렉터리를 공유하면 컨테이너의 자료는 호스트에 덮어져서 컨테이너의 자료는 사라집니다.

mysql 파일이 덮어진 결과가 보입니다.

 

볼륨 컨테이너

출처 : https://velog.io/@ckstn0777/%EB%8F%84%EC%BB%A4-%EB%B3%BC%EB%A5%A8

 

5장. 도커 볼륨 이용하기

이 포스팅은 위키북스의 시작하세요! 도커/쿠버네티스 를 보고 공부한 내용을 바탕으로 하고 있습니다. (문제가 된다면 비공개 처리하겠습니다😂😂)도커 이미지로 컨테이너를 생성하면 이미

velog.io

-v 옵션으로 볼륨을 사용하는 컨테이너를 다른 컨테이너와 공유하는 방법입니다. 컨테이너 생성할 때 "--volumes-from" 옵션을 설정하면 -v 또는 --volume 옵션을 적용한 컨테이너의 볼륨 디렉터리를 공유할 수 있습니다. 

docker run -it --name volumes1 --volumes-from volume_overide ubuntu

docker run -it --name volumes2 --volumes-from volume_overide ubuntu


도커 볼륨

도커 자체에서 제공하는 볼륨 기능을 활용해 데이터를 보존할 수도 있습니다. 

docker volume create --name myvolume

docker volume ls

볼륨을 생성할 때 플러그인 드라이버를 설정해 여러 종류의 스토리지 백엔드를 쓸 수 있지만 기본적으로 제공되는 드라이버인 local을 사용합니다. 이 볼륨은 로컬 호스트에 저장되며 도커 엔진에 의해 생성되고 삭제됩니다.

 

docker run -it --name volumetest1 -v myvolume:/root/ ubuntu
echo hello, volume! >> /root/test

docker run -it --name volumetest2 -v myvolume:/root/ ubuntu
cat /root/test

 

컨테이너가 아닌 외부에 데이터를 저장하고 컨테이너는 그 데이터로 동작하도록 설계하는 것을 스테이트리스라고 합니다. 스테이트리스 컨테이너 설계는 도커를 사용할 때 매우 바람직한 설계입니다.

-v 대신 --mount 옵션 사용 방법

# 도커 볼륨 마운트 경우
docker run -it --name mount_option_1 \
--mount type=volume, source=myvolume, target=/root \
ubuntu

# 호스트에 마운트하는 경우
docker run -it --name mount_option_2 \
--mount type=bind, source=/home/wordpress_db, target=/home/testdir \
alicek106/volume_test

볼륨 간접 상태 확인 명령어

호스트에서 ls /var/lib/docker/volumes/ 밑에 도커 볼륨이 존재합니다.

-v 옵션에 입력하면 자동으로 "도커 볼륨"이 생성됩니다. (16진수의 형태로 생김)

docker run -i -t --name volume_auto \
-v /root ubuntu

docker container inspect volume_auto | grep volume_auto 을 통해 많은 정보를 확인 가능하여 grep을 통해 볼륨 위치만 확인 합니다.

docker volume prune을 통해 불필요한 볼륨을 삭제할 수 있습니다.

반응형