Wisdom기록보관소
Docker Volume을 사용해보자!! 본문
도커 Volume이란?
- 파일 변경 사항을 UnionFS을 통해 관리! -> 이것 부터 무슨 얘기인지 잘 모르겠다
- UnionFS : Unionfs is a filesystem service for Linux, FreeBSD and NetBSD which implements a union mount for other file systems. - 출처 위키피디아 UnionFS -
리눅스용 파일 시스템 서비스라 합니다. - UnionFS는 이미지 layer와 write layer를 합쳐 컨테이너의 데이터를 관리하는데, 결국 컨테이너 삭제시 write layer도 삭제
-> 컨테이너가 삭제되면 데이터도 역시나 같이 사라짐!
해결법?
- volume을 옵션을 사용하자!
- 저장소를 호스트의 저장소와 연결해서 컨테이너를 삭제해도 남아있게 필요한 데이터는 호스트 저장소에 남아있게하자!
- docker-compose등 이용해서 컨테이너간에 저장소를 공유? 할때도 사용해서 유연하게 구성!
Volume 옵션
컨테이너의 디렉토리만 명시
$ docker run -v (container volume directory) IMAGE
- 위와 같이 불륨 옵션에 값을 디렉토리 하나만 명시하면 자동으로 호스트에는 해쉬값으로 디렉토리가 하나 생성되고
명시한 컨테이너의 경로와 매핑된다.
환경별 고려사항?
- Linux기반 OS 경우 보통 /var/lib/docker/volume 경로에 해쉬값 이름으로 된 디렉토리확인가능
- Mac, Windows의 경오 다시 이 볼륨을 관리하는 컨테이너 혹은 VM에서 관리가 되어 사용하는 환경에서는 해당 디렉토리가 생성되지는 않고 관리하는 VM? container에 생성되는 것으로 보인다.
- 호스트의 특정 디렉토리와 연결
- 해쉬값등으로 저장이 되기 때문에 컨테이너가 삭제가 되거나 한다면 찾기 힘들수 있다
- 볼륨도 접근하기 번거로운 곳에 위치가 되니 관리가 불편하진다
- 그렇다면 내가 원하는 디렉토리와 연결을 해보자!!!
$ docker run -v (host directory):(container directory) IMAGE ...
- 사용법은 아주 간단하다!!!
- 이전사용법에서 간단히 ':' 앞에 원하는 호스트의 디렉토리를 명시해주면 된다
- 호스트 경로를 상대경로로 잡으면 볼륨 관리하는 vm에 경로로 지정되는것인지 검색해서 찾은 디렉토리에도 공유된 디렉토리를 찾을 수 없다. Docker Desktop에서 볼륨을 관리하는 곳에서는 지정한 경로 이름으로 볼륨이 생성되는것은 확인 할 수 있었다. 앱에서도 직접 디렉토리로 접근하는게 아니라 파일을 받는 인터페이스를 제공하는 것으로 봐서는 VM에 볼륨을 관리하는게 아닐까 싶다.
- 절대 경로로 지정시에는 확실히 호스트 환경의 디렉토리에 연결된걸 확인할 수 있었다. 공유된 저장소를 직접 관리하고 싶다면 절대경로로 호스트 환경의 디렉토리와 마운트 하는게 편한 방법이 될것 같다.
- 호스트에 디렉토리가 없는 경우에는 자동으로 생성이 되고 이미 있는 경우에는 호스트에 있는 디렉토리 내용으로 덮어 씌워진다.
컨테이너간 공유
$ docker run -it --volumes-from [공유할 컨테이너명] [이미지]
위와같이 실행하면 생성된 컨테이너는 공유되어 있는 컨테이너의 공유디렉토리를 공유하게 된다. 호스트 저장소에 파일을 생성하면 연결한 컨테이너의 공유폴더에도 그 컨테이너에 위 옵션으로 적용한 컨테이너도 같은 디렉토리에 파일이 생성이된다.
볼륨생성
위에서 상대경로처럼 불륨을 생성하면 도커자체가 관리하는 볼륨이 생성되었는데 이를 컨테이너를 만들때가 아닌 불륨만 생성할 수 있다.$ docker volume create --name [이름!!!]
다른 부족한 부분도 많을 텐데 하루종일 찾아봤는데 아직도 많이 부족하다. 차근이 실무나 테스트 프로젝트에 적용하면서 부족한 점을 체워 나가야 할텐데...
아무튼 여기까지..
'Study! > Docker' 카테고리의 다른 글
Docker resource 관리를 해보자 (0) | 2022.02.06 |
---|---|
Docker 익히기~! (0) | 2020.07.27 |