volume

2023. 10. 5. 17:10docker

volume

Docker Volume은 Docker 컨테이너에서 데이터를 지속적으로 저장하고 관리하기 위한 방법 중 하나다. Docker Volume을 사용하면 컨테이너의 데이터를 호스트 머신과 독립적으로 관리하고 백업하거나 공유할 수 있다.

 

 

volume 종류

1. 호스트 볼륨 (Host Volumes)

  • 호스트 볼륨은 호스트 운영 체제(호스트 머신)의 파일 시스템 경로를 컨테이너와 공유한다.
  • 호스트 볼륨을 사용하면 호스트의 파일 및 디렉터리를 컨테이너와 공유할 수 있으며, 컨테이너가 호스트 파일 시스템에 직접 액세스할 수 있다.
  • 호스트 볼륨은 -v 또는 --volume 플래그와 함께 사용하여 지정된다. ex) -v /host/path:/container/path

 

 

2. 컨테이너 볼륨 (Container Volumes)

  • 컨테이너 볼륨은 컨테이너 내에서만 사용되는 저장 공간이다. 다른 컨테이너와 볼륨을 공유하지 않는다.
  • 컨테이너 볼륨은 -v 또는 --volume 플래그와 함께 컨테이너 내부 경로를 지정하여 생성된다.
  • 주로 컨테이너 간 데이터 공유나 데이터베이스 파일 저장 등과 같은 목적으로 사용된다.

 

 

3. 도커 볼륨 (Docker Volumes)

  • 도커 볼륨은 도커에서 관리하는 볼륨 타입으로, 호스트 파일 시스템과 분리된 별도의 볼륨 저장소를 제공한다.
  • 도커 볼륨은 컨테이너 간 데이터 공유 및 데이터 보존을 위한 안정적인 방법으로 사용된다.
  • docker volume create 명령어를 사용하여 도커 볼륨을 생성하고, 컨테이너 실행 시 -v 플래그를 사용하여 볼륨을 연결할 수 있다.
  • 저장 장소 : 호스트 내 /var/lib/docker/volumes/$(volume-name)/_data

 

 

특징과 사용 사례
  • 데이터의 지속성 : Docker 컨테이너는 일반적으로 일회성이다. 즉, 컨테이너가 종료되면 컨테이너 내부에 저장된 데이터도 소멸한다. 하지만 Docker Volume을 사용하면 데이터가 지속되며, 컨테이너가 종료되더라도 데이터는 남아 있다.
  • 데이터 공유 : Docker Volume은 여러 컨테이너 간에 데이터를 공유하는 데 사용될 수 있다. 여러 컨테이너가 동일한 Volume을 마운트하면 데이터를 공유할 수 있으므로 데이터를 중복으로 생성할 필요가 없다.
  • 백업 및 복원 : Volume을 사용하면 컨테이너 내부 데이터를 호스트 머신으로 쉽게 백업하고 복원할 수 있다. 이를 통해 데이터 손실을 방지하고 데이터를 보호할 수 있다.
  • 데이터 관리 : Docker CLI 및 Docker Compose와 같은 도구를 사용하여 Volume을 생성, 관리 및 삭제할 수 있다.

 

 

몇 가지 명령어와 옵션
  • docker volume create : 새로운 Volume을 생성한다.
  • docker run -v <Volume 이름>:<컨테이너 경로> : 컨테이너 내부 경로를 지정한 Volume에 연결한다.
  • docker volume ls : 현재 시스템에 존재하는 Volume 목록을 표시한다.
  • docker volume rm <Volume 이름> : 더 이상 필요하지 않은 Volume을 삭제한다.
  • docker volume prune : 사용하지 않는 Docker Volume을 정리하고 삭제하는 데 사용한다.

 

 

volume 생성

docker run -d -v $(pwd)/html:/usr/share/nginx/html -p 80:80 nginx

 

 

docker exec -it c2 bash

 

 

확인

 

 

volume에 nginx 연동

docker run -d --name my-volume -it -v /opt/html:/usr/share/nginx/html ubuntu:focal

docker run -d --name nginx --volumes-from my-volume nginx

확인 후 docker exec -it 99 bash

 

 

파일 생성

 

 

확인

 

 

volume에 nginx 2개 연동

docker run -d -v $(pwd)/html:/usr/share/nginx/html --name web-volume ubuntu:focal

docker run -d --name nginx1 --volumes-from web-volume -p 80:80 nginx

docker run -d --name nginx2 --volumes-from web-volume -p 8080:80 nginx  --no-cache

확인

 

--no-cache : Docker 이미지를 빌드할 때 이전 빌드에서 캐시를 사용하지 않도록 설정한다. 이렇게 하면 항상 최신 버전의 이미지를 가져오게 된다.

 

 

ubuntu@ubuntu:~$ docker exec -it 17 bash

파일 생성

 

 

ubuntu@ubuntu:~$  docke exec -it 00 bash

파일 생성

 

 

호스트 볼륨에서 확인

 

 

docker volume 생성

docker volume create --name db

생성

 

 

저장 장소

 

 

docker run -d --name mysql -e MYSQL_DATABASE=testdb -e MYSQL_ROOT_PASSWORD=12345 -v db:/var/lib/mysql:ro -p 3306:3306 mysql:5.7

mysql 도커 생성 후 확인

 

 

docker volume 확인

 

 

docker mysql 접속

apt -y install mysql-client*

mysql -h 192.168.2.10 -uroot -p

'docker' 카테고리의 다른 글

Docker commit  (0) 2023.10.06
script 실행할 entrypoint 설정  (0) 2023.10.06
dockerhub 활용  (0) 2023.10.05
network  (0) 2023.10.05
blog 만들기  (0) 2023.10.05