ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker (6) - 도커 볼륨
    Infra/Docker 2024. 1. 25. 17:02

     

    1. 볼륨의 기초 개념 

     

    - 컨테이너는 기본적으로 stateless (상태없음)이다. 컨테이너가 실행 된 후 발생하는 모든 변경 사항은 컨테이너 레이어에 만 있다 -> 컨테이너가 종료되면 변경 사항이 모두 사라진다.

    - 컨테이너는 Stateless하기 때문에 쉽게 개수를 증가시킬 수 있으며, 다른 환경에서도 빠르게 배포할 수 있습니다.

    - 소프트웨어의 버전 등 컨테이너의 상태 변경이 필요한 경우 새로운 버전의 이미지를 만들어서 배포합니다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 클라우드 네이트브 환경에서는 MSA 아키텍처에 따라 서버의 개수가 매우 많아집니다.

    - 모던 애플리케이션의 요구사항을 충족시키기 위해 서버 관리 방법론이 변화했습니다.

    - 전통적인 서버 방법론은 서버 한대를 중요하게 생각하는 Pet 방식입니다. 

    - 컨테이너를 활용한 서버 방법론은 Cattle 방식입니다. 서버를 빠르게 교체할 수 있으며, 서버의 상태를 최대한 제거합니다.

    출처: 쉬운도커(데브위키) - 인프런

     

    -> 컨테이너의 이미지는 한번 지정된 후 변경x -> 이러한 특징으로 새로운 컨테이너로 쉽게 대체됨

    -> 데이터를 영구적으로 저장하기 위해서는 데이터베이스 서버 사용이 필수이다.

        따라서 상태가 없는 컨테이너에 이러한 데이터를 저장해선 안되고, 저장 및 공유가 필요한 데이터는 

        반드시 외부에 저장해야한다. 

    -> 도커의 볼륨을 이용하면 위와 같은 중요 데이터를 컨테이너 외부에 저장할 수 있다.

     

    * 사용자 세션 정보나 캐시 정보는 캐시 서버 혹은 쿠기를 통해 관리하자 (파일 메모리 저장x)

       동일한 요청은 항상 동일한 결과를 제공해야한다 (컨테이너의 상태 없음으로 충족시킬 수 있다)

       환경 변수나 구성 파일을 통해 설정을 외부에서 주입할 수 있어야한다. ( 컨테이너 실행시 -e 옵션을 통해 가능하다)

     

    2. 도커 볼륨 사용 

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 컨테이너 환경에서는 같은 서버의 대수가 여러 개존재한다.

    - 각 컨테이너에는 저장 및 공유가 필요한 파일을 저장해선 안되니 외부 저장 공간을 컨테이너 특정 경로에 연결해서 

      사용할 수 있다 (이를 마운트 한다고 한다)

    - 외부 저장 공간은 물리적으로 연결하거나, 네트워크에 연결할 수 있습니다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 컨테이너 실행 시 볼륨을 컨테이너의 내부 경로에 마운트 할 수 있습니다 (usb를 꽂는다고 생각해보십시오!)

    docker run -v volume1:/var/lib/postgresql/data
                  {볼륨명} {컨테이너 내부 경로}

    출처: 쉬운도커(데브위키) - 인프런

     

    - 컨테이너가 종료되어도 볼륨은 삭제되지 않습니다.

    - 다른 컨테이너를 실행할 때 동일한 볼륨에 마운트하면, 똑같이 데이터를 받을 수 있습니다.

     

    출처: 쉬운도커(데브위키) - 인프런

    dorcker run -v volume1:/etc/postgresql -v volume2:/var/lib/postgresql/data

     

    - 여러 개의 컨테이너가 하나의 볼륨을 공유할 수 있습니다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 실제로 호스트에 볼륨이 생성되는 경로윈도우에 경우 찾기 힘들지만, 리눅스에 경우 접근할 수 있습니다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 바인드 마운트를 통해 볼륨이 아닌, 외부 디렉토리를 지정할 수 있습니다.

     

     

     

    참조자료:

    https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%89%AC%EC%9A%B4-%EB%8F%84%EC%BB%A4/dashboard

     

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

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

    www.inflearn.com

     

    'Infra > Docker' 카테고리의 다른 글

    Docker (5) - 도커 네트워크  (0) 2024.01.25
    Docker (3) - 이미지 빌드  (0) 2024.01.24
    Docker(4) - 레지스트리  (0) 2024.01.24
    Docker (2) - 이미지와 컨테이너  (0) 2024.01.24
    Docker (1) - 가상화 기술  (0) 2024.01.24
Designed by Tistory.