Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

전공공부

[K8S - CKA] Storage in Docker 본문

Study/K8S

[K8S - CKA] Storage in Docker

monitor 2024. 1. 20. 23:25
File System

 

/var/lib/docker 폴더에 모두 이미지든 도커 파일들이 쌓입니다.

 

그리고, Layer 구조로 저장이 되는데요.

 

Dockerfile을 열어서 보면 이미 Ubuntu image가 설치 되었다고 치면 이미 마주치면서 있는 계층의 것들을 다운로드하지 않습니다. 필요한 부분만 변경해서 업데이트가 될 뿐이죠.

 

그리고, 이러한 Dockerfile의 처리들은 Image Layer로 처리가 되고 이를 컨테이너 레이어를 만들고 글을 쓸 수 있는 레이러를 하나 더 올려서 처리 할 수 있습니다.

 

Container Layer가 RW를하죠.

 

이해하기 쉽게 예제를 들겠습니다

docker build Dockerfile -t username/custom-app #이미지 레이어 생성

 

위 명령어로 이미지 레이어를 생성하고

docker run username/custom-app # 컨테이너 레이어를 생성

 

이렇게 최종적으로 컨테이너 레이어를 생성하면 이렇게 생성이되는데 이미지 레이어는 docker file을 만드는 이미지일 뿐이므로 docker rmi -f 해서 지우는 것을 아실 겁니다. (용량 때문에 삭제 권장이 됌)

 

그래서, 컨테이너 레이어에서 만들어진 것이 실제로 돌아가는 어떠한 app이 되는데요. 이때 우리가 궁금한건 컨테이너가 사라지면 disk도 날아가는데 이를 어떻게 복원 할까입니다.

 

Volume - 볼륨 마운트

 

볼륨이라는 개념을 차용해서 도커의 컨테이너 데이터를 저장합니다.

 

예를 들어서 아래와 같이 지정하면 볼륨을 컨테이너에 마운트해서 컨테이너가 사라지더라도 볼륨에 데이터가 남아 있게 되는데요 명령어는 아래와 같습니다.

docker run -v custom-app:/var/lib/mysql mysql

 

이런식으로 볼륨을 마운트 할 수 있습니다.

 

그리고, 이미 사용하던 볼륨에 같은 path를 붙이면 컨테이너 내부에서 동일한 볼륨을 보기 때문에 파일이 공유되는것도 볼 수 있습니다.

 

바인드 마운팅(Directory Mount to Volume)

 

아래 처럼 지정하면 도커의 컨테이너 mysql의 /data 디렉토리의 값들을 /var/lib/mysql에 mysql꺼로 저장하겠다는 것 입니다.

docker run -v /data/mysql:/var/lib/mysql mysql

 

요즘은 아래와 같이 직접 지정해주는 대시 방식이 권장된다고 합니다.

$ docker run -it --name mysql --volume-driver rexray/ebs --mount src=ebs-vol,target=/var/lib/mysql mysql

'Study > K8S' 카테고리의 다른 글

[K8S - CKA] Networking  (0) 2024.01.22
[K8S - CKA] Volumes & Persistent Volumes (Claims)  (0) 2024.01.21
[K8S - CKA] Network Policy  (0) 2024.01.18
[K8S - CKA] Security Context  (0) 2024.01.16
[K8S - CKA] Image Security  (0) 2024.01.16