본문 바로가기

프로젝트/클라우드 스터디

[2회차]docker 볼륨관리

[n회차 글 목록]

 

 

 

1. 도커 컨테이너의 데이터 관리 개념 

  • 기본적으로 모든 데이터는 임시로 저장된다. → 컨테이너 삭제 시 모든 Data 사라짐. 
  • Data를 지속적으로 사용하고자하는 경우, ‘볼륨’이라는 개념 이용
  • 도커 컨테이너는 호스트와 컨테이너 사이의 디렉토리 공유 및 재사용 기능을 제공함. → 내용 수정시 모두 동일하게 반영됨. 
  • A컨테이너에서 사용한 Data는 B컨테이너 에서도 사용 가능.
  •  쓰기 가능한 컨테이너 레이어에 Data가 저장되는데, 사실 데이터를 쉽게 이동 불가능함. 
  • 파일 시스템을 관리하기 위한 스토리지 드라이버가 필요함.  

 

ex) mysql 컨테이너를 사용 후 DB도 구상함 → mysql 컨테이너 삭제하면 데이터 베이스도 날라가는 문제 발생 → 볼륨 이용해서 영구적인 데이터 보존 가능



도커에서 컨테이너가 호스트 시스템에 파일을 저장할 수 있는 방법에는 Volume, bind mounts, tmfs mount 등이 있음. 

 

2. Docker 볼륨(volume) 관리 방식

  • 볼륨은 자동 및 수동 방식으로 구성가능 
  • 만들어진 볼륨은 호스트에 저장됨. 




docker volume 명령어

[root@localhost Desktop]# docker volume help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove unused local volumes
  rm          Remove one or more volumes
  update      Update a volume (cluster volumes only)

Run 'docker volume COMMAND --help' for more information on a command.



 볼륨 생성

docker volume create 볼륨명



볼륨 확인 

docker volume ls //볼륨 목록

docker volume inspect 볼륨명 //볼륨 자세한 정보





볼륨과 컨테이너 연결 예제

docker run시 -v 옵션을 사용하여 볼륨과 컨테이너를 연결한다.

docker run -d --name 이미지명 -v 호스트_볼륨정보:컨테이너_경로_정보 

docker run -d --name test1 -v test_vol:/var/lib/mysql



웹 서버 1,2 를 데이터 연동시키기 

docker run -d --name web1 -p 8080:80 -v test_vol1:/var/www nginx

docker run -d --name web2 -p 8081:80 -v test_vol2:/var/www



컨테이너 삭제 시 볼륨도 함께 삭제

docker rm -v -f 컨테이너명 

→ -v옵션을 통해 가능





3. Docker bind mounts(바인드 마운트) 방식

  • 바인드 마운트 호스트 시스템의 아무 곳에나 저장 가능. 
  • 언제든지 수정 가능
  • volume에 비해 제한적인 기능 
  • 호스트 시스템의 파일 or 디렉터리가 컨테이너에 마운트 됨. 
  • 파일 또는 디렉터리는 호스트 시스템의 절대 경로를 참조 



4. Docker 이미지와 레이어 

이미지는 여러 개의 읽기 전용 레이어로 구성

ㄹ ㅔ 이어 개념 잘 모루겟다

https://hyeo-noo.tistory.com/340 

?? 잘 모르겠다..