이전 포스트에서 컨테이너는 고유하게 읽기 쓰기의 계층화된 파일 시스템을 가지는 방법에 대해 알아보았습니다. 일반적으로 컨테이너가 실행될 때 변경된 내용이 레이어에 쓰이지만 컨테이너가 제거되면 그 내용도 사라지게 됩니다. 다행히도 Docker와 컨테이너에서는 볼륨이라는 기능을 통해 컨테이너와 독립해서 데이터를 관리할 수 있습니다.
Docker Volume 이란?
볼륨이란 무엇일까요? 볼륨은 컨테이너와 관련된 특별한 유형의 디렉터리 입니다. 일반적으로 볼륨은 모든 데이터 유형을 저장할 수 있기 때문에 데이터 볼륨이라고 합니다. 코드가 될 수도 있고 로그파일 일 수도 있습니다. 볼륨을 사용하면 컨테이너 간에 데이터를 공유할 수 있고 여러 큰 이너가 볼륨에 쓰게 하거나, 하나 이상의 볼륨의 쓰기 작업을 수행하는 단일 컨테이너만 존재할 수도 있습니다.
이러한 것들에 대한 장점은 이미지가 업데이트 될 때 데이터 볼륨에 영향을 미치지 않는다는 것입니다. 따라서 컨테이너가 컴퓨터에서 삭제된 경우에도 데이터 볼륨은 남아서 여전히 제어가 가능하게 할 수 있습니다.
Volume 개요 잡기
우리가 컨테이너를 가지고 있다면, 그 컨테이너 안의 볼륨을 정의할 수 있습니다. 예를 들어 컨테이너에 /var/www이라고 볼륨을 지정했다고 생각해 보겠습니다.
이제 쓰기 작업을 위해서 어디서 쓰기를 할지 정하는 두 가지 선택지가 있습니다.
첫 번째는 Docker에 알아서 그 위치를 지정하게 하는 것이고, 두 번째는 그 위치를 직접 지정하는 것 입니다.(이어지는 포스트에서 다룹니다) 지금은 단순히 볼륨을 쓸 때 Docker 컨테이너의 코드가 실제로 var/www 경로에 대한 쓰기 작업을 수행한다고 가정해 봅시다.

이 경로(/var/www)는 Docker 호스트에 있는 마운트된 폴더의 별칭일 뿐입니다. 이제 Docker 호스트가 실제로 컨테이너를 호스팅하고 있다고 생각해보세요. Linux 시스템 또는 윈도우 시스템에서 실행 중인 경우 호스트가 해당 OS가 됩니다.
따라서 이 예에서는 계층형 파일 시스템과 관련하여 컨테이너의 얇은 읽기/쓰기 계층 대신 Docker 호스트의 일부인 마운트된 폴더 영역에 볼륨을 기록할 수 있습니다.
간단하게 말을 바꾸면 컨테이너와는 독립되는 호스트PC(로컬PC)의 저장공간에서 볼륨에 연결시켜 데이터 쓰기 작업을 진행하는 것입니다. 이제 컨테이너를 삭제해도 호스트에 기록한 볼륨은 계속 남아있을 수 있습니다. 원한다면 모든 코드를 보존할 수 있습니다.
다음 포스트에서 어떻게 하면 볼륨을 이용해서 소스 코드를 컨테이너에 넣을 수 있을지 알아보도록 하겠습니다.
'Container > Docker' 카테고리의 다른 글
[Docker] 실행환경은 컨테이너, node 소스 코드는 호스트pc 볼륨에 연결하기 (0) | 2022.04.14 |
---|---|
[Docker] Volume 사용자 정의, 볼륨 저장 위치 지정하기 (0) | 2022.04.12 |
[Docker] 도커, Layered File System 이해하기 (0) | 2022.04.11 |
[Docker] 컨테이너 조회, 시작, 정지, 삭제, 컨테이너 터미널 연결 하기 (0) | 2022.03.31 |
[Docker] 이미지와 컨테이너 차이, 컨테이너 기동 하기 (0) | 2022.03.30 |
최근댓글