티스토리 뷰

Docker

[Docker] 도커 볼륨

heemang.dev 2024. 2. 19. 15:47

Statelss 한 도커 컨테이너

도커 컨테이너는 상태를 저장하지 않는 Stateless 특징을 갖습니다. A 이미지로 컨테이너를 실행하다가 삭제하고 다시 컨테이너를 생성하면 이전의 변경사항이 모두 삭제됩니다. 왜냐하면 읽기 전용인 이미지를 컨테이너로 생성하면 R/W 컨테이너 레이어가 생성됩니다. 해당 컨테이너에서 변경사항은 R/W 컨테이너 레이어 위에 추가되기 때문에 컨테이너를 삭제할 시에 변경사항이 모두 삭제됩니다.

 

예를 들어 Nginx 이미지로 컨테이너를 실행하고, 해당 컨테이너에서 변경사항이 발생하였습니다. 컨테이너에서의 변경사항을 기존의 이미지에 변경사항을 적용하게 된다면 해당 이미지를 사용하는 모든 컨테이너에 변경사항을 적용해야 합니다. 이러한 방식은 stateful 한 방식으로 여러 개의 컨테이너를 병렬로 실행하는 경우 데이터 일관성과 충돌 문제가 발생할 수 있습니다. 즉 이미지가 변경되면 기존의 상태를 유지하는 컨테이너와의 호환성 문제가 발생할 수 있습니다.

기존의 이미지에 변경사항 적용

 

이러한 문제를 해결하기 위해서 도커 컨테이너는 statelss 특징을 가지고 있게 됩니다. 이는 컨테이너가 상태를 유지하지 않고, 필요한 데이터를 외부 저장소에 저장하고 사용하는 것을 의미합니다.

A 이미지를 사용하던 컨테이너에서 변경사항이 발생하면 다음 절차를 수행합니다.

  1. 변경이 필요한 컨테이너의 이미지를 수정
  2. 수정된 이미지를 새롭게 빌드
  3. 새롭게 빌드된 이미지를 기반으로 새로운 컨테이너 생성
  4. 기존의 컨테이너를 중지하고 삭제
  5. 3번에서 생성된 새로운 컨테이너 실행

Stateless 특징을 갖기 때문에 여러 대의 컨테이너를 여러 곳에 빠르게 배포하 수 있습니다.

새로운 이미지 빌드

도커 볼륨

도커 컨테이너가 Stateless 특징을 가진다는 것을 알았습니다. 그런데 데이터를 영구적으로 저장하기 위해서는 DB 사용이 필수적입니다. 상태를 유지하지 않는 도커 컨테이너에 DB를 저장하면, 컨테이너가 삭제되는 즉시 데이터 또한 사라지게 됩니다. 따라서 저장 및 공유가 필요한 데이터는 반드시 외부에 저장해야 합니다.

도커 볼륨을 사용하지 않을 때의 문제점

 

이러한 문제를 해결하기 위해 마운트를 통해 외부 저장 공간을 특정 경로에 연겨할 수 있어야 합니다. 외부 저장공간은 물리적으로 연결하거나, 네트워크에 연결할 수 있습니다.  이러한 방식을 도커 볼륨을 사용한다고 합니다.

네트워크를 통한 외부 저장공간 연결

도커 볼륨이란 도커 컨테이너에서 데이터를 영구적으로 저장하고 공유하기 위한 기능입니다. 도커 볼륨을 사용하면 데이터를 보관하고 유지할 수 있으며, 여러 컨테이너 간에 데이터를 공유도 할 수 있습니다.

예를 들어 로드밸런싱에 의해 한 서비스의 트래픽을 여러 대의 서비스로 분산시킬 수 있습니다. 분산된 트래픽은 여러 대의 컨테이너에서 처리하게 됩니다. 컨테이너의 데이터를 도커 볼륨에 저장하고 필요한 컨테이너에서 데이터를 마운트 하여 데이터에 접근할 수 있습니다. 이를 통해 컨테이너 간 데이터 공유와 데이터의 영속성을 보장하게 됩니다.

도커 볼륨의 영속성 보장

 

도커 볼륨의 영속성 보장에 대해서 실습으로 알아보겠습니다.

도커 볼륨 생성 및 조회

도커 컨테이너 실행 및 조회

도커 볼륨 업데이트

컨테이너에서 생성한 DB가 도커 볼륨에도 저장됩니다

도커 컨테이너 삭제

새로운 도커 컨테이너 실행 및 조회

이전에 사용한 도커 볼륨을 그대로 사용합니다.

도커 볼륨 조회

ContainerA를 통해 새로운 데이터베이스를 생성하고 컨테이너를 제거하였습니다. 이후 Container-newA를 생성하여 도커 볼륨을 조회한 결과 mydb가 그대로 유지되어 있음을 확인할 수 있습니다.


인프런 - 개발자를 위한 쉬운 도커

 

[2024 NEW] 개발자를 위한 쉬운 도커 강의 - 인프런

현업 개발자가 도커를 사용한 경험을 녹여낸 새로운 커리큘럼으로 기존 교재 및 강의와 차별된 강의를 제공합니다. 단순한 명령어 사용법이 아닌 도커를 왜 사용해야하는지 대한 근본적인 질문

www.inflearn.com

 

Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
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