Data의 종류
- Application (Code + Environment)
1. 개발자에 의해 작성되고 제공 되는 데이터
2. 이미지가 추가되거나 컨테이너가 빌드될 때 생성
3. 이미 생성된 이미지는 변경될 수 없음
* Read-only, 이미지에 저장되는 데이터
- Temporary App Data (entered user input)
1. 컨테이너가 돌아갈 때 생성되는 데이터
2. 메모리 또는 임시파일에 저장 됨
3. 동적으로 변화함. 그러나 정기적으로 초기화 됨
* Read + write, 컨테이너에 임시로 저장되는 데이터
- Perment App Data (user accounts)
1. 컨테이너가 돌아갈 때 생성되는 데이터
2. 파일이나 데이터베이스에 저장이 됨
3. 컨테이너가 멈추거나 재 시작되도 꼭 사라지는 것은 아님
* Read + write, 컨테이너와 볼륨에 저장되는 영구적인 데이터
두가지 타입의 외부 저장소
볼륨(Volumes)
- 컨테이너와 매핑된 호스트머신의 하드드라이브에 있는 폴더.
- 컨테이너는 볼륨안에 데이터를 쓰고 읽을 수 있다.
- 도커에 의해 관리된다.
- Docker는 개인 컴퓨터의 호스트의 폴더나 경로 공간에 세팅된다. (단, 그 경로는 알 수 없다.)
- command 명령어 `docker volume` 을 활용하여 관리할 수 있다.
볼륨의 종류
익명볼륨 (Anonymous Volumes)
docker run -v /app/data ...
- 컨테이너가 종료되면 데이터도 삭제된다.
명시된볼륨 (Named Volumes)
docker run -v data:/app/data ...
- 컨테이너가 종료되더라도 데이터가 남아있는다.
- 그러나 수정된 코드 결과는 컨테이너에 즉시 반영되지 않는다.
바인드마운트(Bind Mounts)
docker run -v/path/to/code:/app/code...
- 개발자에 의해 관리된다.
- 호스트 머신의 폴더와 경로를 지정할 수 있다.
- 'source code'같은 데이터를 편집 가능하고 지속적으로 사용할 수 있다.
볼륨과 컨테이너의 상호작용
1. 볼륨은 컨테이너에 탑재된다.
2. 컨테이너 데이터는 볼륨에 저장된다
3. 볼륨 데이터는 컨테이너에서 접근 가능하다.
공통
- 생성된 볼륨과 마운트는 컨테이너에서 지정된 경로와 매핑된다. (즉, 컨테이너에서 생성된 데이터는 매핑 된 경로에 저장된다.)
인수와 환경변수
인수(ARG)
- 도커파일 안에서 사용 가능
- CMD나 어떠한 애플리케이션의 코드에서도 접근 불가능하다.
- ' --build-arg ' 명령어를 통해 이미지를 빌드 시킬 수 있다.
환경변수(ENV)
- 도커파일과 애플리케이션 코드에서도 접근 가능
- ' --env on docker run' 명령어를 통해 도커파일에서 ENV를 실행시킬 수 있다.
최종정리
- 컨테이너는 read+write 데이터이다. 볼륨은 데이터 저장을 도울 수 있으며, 바인드 마운트는 컨테이너와의 즉각적인 인터렉션을 할 수 있도록 도운다.
- 네임드볼륨은 컨테이너가 중지되더라도 저장되어있는 데이터는 영구적으로 사용할 수 있다.
- 익명볼륨은 컨테이너 안에 데이터가 저장이 되고 사용되므로 컨테이너가 중지되면 데이터도 사라진다.
- 바인드 마운트는 네임드 볼륨처럼 컨테이너와 연결되고 사용자에 의해 지정된 호스트머신의 폴더이다.
- 인수와 환경변수는 도커의 이미지와 컨테이너를 더 dynamic 하고 configurable 하게 만든다.
'개념공부 > Docker & Kubernetes' 카테고리의 다른 글
[Docker]도커란 무엇인가? (1) | 2022.06.06 |
---|
댓글