본문 바로가기
개념공부/Docker & Kubernetes

[Docker] Volumes, Bind Mounts 볼륨과 바인드마운트 - 컨테이너 데이터를 저장하는 기술

by 29살아저씨 2022. 6. 8.
반응형

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

댓글