임시 어플리케이션 데이터
어플리케이션이 실행되는 동안 생성된 일시적인 데이터를 말합니다.
예를 들어 웹사이트의 경우 입력폼에 무언가를 입력하며 그 입력한 데이터를 가져와 서버에서 실행중인 컨테이너로 처리하는데 입력된 그 사용자 데이터가 임시 데이터 입니다.
임시 데이터는 메모리에만 저장되거나, 데이터베이스 파일에 저장될 수 있습니다. 또한 읽기, 쓰기가 가능하여 이미지가 아닌 컨테이너에 저장됩니다.
영구 어플리케이션 데이터
영구 애플리케이션 데이터는 애플리케이션이 생성하는 중요한 데이터를 의미합니다.
사용자 계정 정보, 설정, 로그, 파일 등이 해당합니다.
컨테이너가 종료되더라도 영구 애플리케이션 데이터는 보존되어야 합니다. 그래서 컨테이너 외부에 안전하게 저장되어야 합니다. 안전하게 저장하기 위해 볼륨의 도움을 받게 됩니다.
부과 레이어
이미지 위에 도커에 의해 추가된 레이어로 실제로 그 컨테이너를 구성합니다.
동일한 레이어가 여러 이미지에서 사용될 때 이를 "부과"한다고 하는데, 이미지에 새로운 레이어를 추가하려면 해당 레이어를 "부과"하여 이미지에 추가합니다.
이 부가 레이어는 기본적으로 로직이라고 할 수 있는데, 이미지를 인식하고, 이미지의 파일 시스템을 인식하며, 복사하지 않고 파일 시스템을 미러링하는 로직입니다.
볼륨(Volumes)
볼륨은 호스트 머신에 있는 폴더 또는 디렉토리입니다. 이 폴더는 컨테이너나 이미지 내부에 존재하지 않고 호스트 컴퓨터의 하드 드라이브에 있거나 컨테이너와 연결된 폴더입니다.
역할
볼륨은 호스트 머신과 컨테이너 간의 데이터를 공유하고 유지할 수 있게 합니다. 이것은 파일이나 디렉토리의 변경 사항을 실시간으로 반영하는 데 사용됩니다. 호스트 머신의 파일을 컨테이너 내부로 가져올 수 있고, 컨테이너에서 생성한 파일을 호스트 머신에서 사용할 수 있습니다.
*copy명령과 비슷하나 copy는 실제로 복사하도록 명령한 경로와 파일의 스냅샷을 취한 다음 이러한 파일과 폴더를 이미지에 복사하는 게 전부입니다.
데이터 지속성
볼륨을 사용하면 컨테이너가 종료되어도 데이터는 보존됩니다. 컨테이너를 제거하더라도 연결된 볼륨의 데이터는 유지됩니다. 이것은 중요한 데이터나 설정을 보존하고 재사용하는 데 유용합니다.
데이터 공유
볼륨을 통해 여러 컨테이너가 동일한 데이터에 액세스할 수 있습니다. 이것은 여러 컨테이너가 동일한 데이터에 대해 작업하고 그 결과를 공유해야 하는 경우에 유용합니다.
볼륨을 컨테이너에 추가하는 방법
도커에서 볼륨을 컨테이너에 추가하려면 Dockerfile에 VOLUME 명령을 추가하면 됩니다.
VOLUME ["경로"]
위 명령은 컨테이너 내부의 특정 경로를 호스트 머신의 폴더 또는 볼륨에 매핑합니다.
이것을 통해 컨테이너 내부에서 생성되는 데이터를 호스트 머신의 파일 시스템에 저장하거나 다른 컨테이너와 데이터를 공유할 수 있습니다.
볼륨 확인 명령
docker volume ls
볼륨 삭제 명령
docker volume rm [볼륨이름]
익명(Anonymous)의 볼륨
익명 볼륨은 컨테이너 내의 임시 데이터를 관리하기 위한 용도로 생성됩니다.
컨테이너가 종료되면 익명 볼륨 역시 삭제됩니다.
컨테이너를 재시작해도 익명 볼륨은 초기화됩니다.
컨테이너 간 데이터 공유에는 적합하지 않으며, 일시적인 데이터 저장에 사용됩니다.
익명 볼륨은 호스트 머신에 폴더를 생성하지만 컨테이너 내부 데이터를 호스트 파일 시스템에 저장할 수 있어 효율적입니다.
익명 볼륨 생성 명령어
docker run -v [볼륨경로] [이미지_이름]
명명된(named) 볼륨
명명된 볼륨은 도커 외부에 생성된 데이터 저장소이며 컨테이너와 독립적으로 존재합니다.
컨테이너가 종료된 후에도 볼룸이 유지됩니다. 즉, 하드 드라이브의 폴더가 그대로 유지가 됩니다.
새 컨테이너를 시작하면 볼륨이 복구되고 폴더가 복구되어 해당 폴더에 저장된 모든 데이터를 계속 사용할 수 있습니다.
영구적이어야 하는 데어터나, 편집하거나 직접 볼 필요가 없는 중요한 데이터에 적합합니다.
명명된 볼륨은 Dockerfile에서 생성할 수 없고 명령어로 생성해야 합니다.
명명 볼륨 생성 명령어
docker run -v [볼륨이름]:[볼륨경로] [이미지_이름]
바인드 마운트 (Bind Mounts)
바인드 마운트는 호스트 머신의 특정 폴더를 컨테이너에 연결하는 방식입니다.
컨테이너를 종료하거나 제거해도 바인드 마운트된 데이터는 호스트 머신에서 유지됩니다.
바인드 마운트된 데이터를 삭제하려면 호스트 머신에서 직접 삭제해야 합니다.
여러 컨테이너가 동일한 바인드 마운트를 사용하여 호스트 머신의 데이터를 공유할 수 있습니다.
데이터를 호스트 머신 파일 시스템에 저장하므로 호스트와 컨테이너 간의 데이터 공유와 백업에 유용합니다.
바인드마운트볼륨 생성 명령어
docker run -v [호스트머신폴더경로]:[볼륨경로] [이미지_이름]
도커를 사용할 때 바인드 마운트와 볼륨을 올바르게 활용하면 컨테이너의 파일 시스템 관리를 효과적으로 수행할 수 있습니다. 바인드 마운트를 통해 컨테이너와 호스트 머신 간의 파일 시스템 충돌을 해결하고, 익명 볼륨을 추가하여 'node_modules'와 같은 중요한 폴더를 보존할 수 있습니다. 이러한 방법을 사용하면 컨테이너의 이미지를 다시 빌드하지 않고도 변경 사항을 신속하게 적용할 수 있습니다.
'Docker' 카테고리의 다른 글
Docker 네트워킹 (교차) 컨테이너 통신 (0) | 2023.11.03 |
---|---|
도커 볼륨 읽기 전용 설정, Dockerfile 환경 변수 및 빌드 타임 인수 (2) | 2023.10.31 |
도커 이미지 공유하기 (2) | 2023.10.26 |
도커 이미지 & 컨테이너 관리 (0) | 2023.10.25 |