도커의 데이터에는 3가지가 있다
어플리케이션 데이터
- 이미지 안에 저장된다.
- 읽기 전용이며 코드와 실행환경이 들어있다.
- 이미지 빌드 완료 후에는 수정이 불가능하다.
임시 앱 데이터
- 컨테이너에 저장된다.
- 실행중인 컨테이너에서 생성되는 데이터이다.
- 읽기 쓰기가 가능하다.
영구 앱 데이터
- 볼륨을 사용하여 컨테이너에 저장된다.
- 실행중인 컨테이너에서 생선되는 데이터이다.
- 읽기 쓰기가 가능하다.
볼륨
볼륨은 컨테이너에 마운트된 호스트 머신의 폴더이다
호스트 머신의 폴더이기 때문에 볼륨은 컨테이너가 꺼져도 데이터를 유지시켜준다.
도커는 호스트 머신의 폴더와 경로를 지정한다.
볼륨은 호스트 머신상 어디에 존재하는지 알기 어렵다.
Anonymous Volume
익명 볼륨은 컨테이너가 종료되면 사라진다.
익명 볼륨을 사용하려면 Dockerfile에 VOLUME [<컨테이너 경로>]
를 작성하거나 컨테이너 실행시 -v <컨테이너 내부 경로>
옵션을 추가로 작성한다.
Named Volume
명명된 볼륨은 컨테이너가 종료되도 유지된다.
따라서 영구적인 데이터나 직접볼 필요가 없는 중요한 데이터에 적합하다.
호스트 머신상 어디에 존재하는지 알지 못하므로 호스트머신에서의 편집은 어렵다.
명명된 볼륨을 사용하려면 컨테이너 실행시 -v <이름>:<컨테이너 내부 경로>
옵션을 추가로 작성한다.
Bind Mounts
바인드 마운트는 호스트 머신 상에 매핑될 컨테이너의 경로를 우리가 정한다.
바인드 마운트는 영구적이고 편집가능한, 예를 들면 소스 코드같은 데이터에 적합하다.
바인드 마운트는 컨테이너에만 적용되므로 컨테이너를 실행할 때 터미널 내부에서 설정해야 한다.
-v <호스트 머신 절대경로>:<컨테이너 내부 경로>
옵션을 추가로 작성한다.
❗️경로 충돌
도커는 볼륨 사이에 경로 충돌이 있을 경우 더 상세한 경로를 우선시 한다.
예를 들면 /app
경로보다 /app/node_modules
경로를 우선시 한다.
읽기 전용 볼륨
<컨테이너 내부 경로>:ro
처럼 컨테이너 내부 경로 뒤에 ro
(read-only)를 붙이면 도커가 그 폴더나 하위 폴더에 쓰기를 못한다.
'Docker' 카테고리의 다른 글
[Docker] 🦮월월월월의 컨테이너와 네트워크 (0) | 2024.08.25 |
---|---|
Docker Compose 한 줄로 빌드부터 컨테이너 구동까지 해결하기 (0) | 2024.08.25 |
[Docker] 🦮월월월월의 도커 이미지란 (1) | 2024.07.21 |
[Docker] 🐳도커 1편 (0) | 2024.07.14 |
[Docker] 🦮월월월월의 컨테이너란? (0) | 2024.07.14 |