본문 바로가기
Docker

Docker Container, Host 파일시스템

by 신림쥐 2025. 4. 11.
728x90

 

     


    파일시스템(File System)

    • 모든 운영체제에는 파일 시스템을 가지고 있다.
    • 사용자가 파일을 저장, 검색, 수정하는 데 필요한 모든 기능을 제공하며 컴퓨터 시스템에서 데이터를 저장하고 구성하는 방식을 정의한다.

    Host, Docker Container 파일시스템 특징

    Host

    • 컨테이너 변경 여부에 상관없이 파일 시스템이 계속 유지 된다.
    • Host 파일 시스템을 공유하면 보다 안전하고 효율적으로 프로그램을 만들 수 있다.

    Docker Container

    • 도커 이미지 배포시 새로운 디렉토리를 만들어서 사용한다.
    • 컨테이너가 변경 될때마다 데이터가 초기화/삭제 되기 때문에 필요 없을때 삭제하고, 필요할 때 추가해서 사용할 수 있어서 간편하지만 지속적으로 필요한 파일(DB, 리소스)이 있다면 컨테이너에 올릴 때마다 필요한 파일들을 계속 추가 해줘야 하는 불편함이 있다.
    • 컨테이너 내 저장된 데이터를 다른 컨테이너가 사용하기 어렵다.

    데이터 공유 장단점

    장점

    • 컨테이너 내부에서 호스트 시스템의 파일 및 디렉토리를 읽고 쓸 수있게 된다.
    • 여러 호스트 및 컨테이너 간의 데이터 공유하다.
    • 파일 시스템을 복제할 필요가 없으므로 디스크 공간을 절약할 수 있다.

    단점

    • 컨테이너 내에서 파일 시스템에 직접 접근할 수 있는 보안 위험이 존재할 수 도 있다.
    • 데이터 변경이 즉시 컨테이너에 반영되어 데이터의 일관성을 유지하기 어려울 수 있다.
    • 호스트의 파일 시스템 경로에 의존하는 컨테이너 설정이 생길 수 있다.

    Docker 데이터 관리

    Volume

    • 개념: 호스트 파일 시스템의 특정 디렉토리를 컨테이너 내의 특정 경로와 연결.
    • 특징: 컨테이너가 종료되어도 데이터가 보존되며, 여러 컨테이너와 공유 가능.
    • 용도: 데이터베이스 파일, 로그 파일 저장.
    $ docker run -v [호스트 경로]:[컨테이너 내 경로] [이미지이름]

    Bind Mount

    • 개념: 호스트 파일 시스템의 특정 디렉토리를 컨테이너 내의 특정 경로와 직접 연결.
    • 특징: 호스트와 컨테이너 간 파일 및 디렉토리가 동기화되며, 데이터 공유가 간단하고 유연함.
    • 용도: 호스트와 컨테이너 간 파일 및 디렉토리 동기화.
    $ docker run -v [호스트 디렉토리]:[컨테이너 내 경로] [이미지이름]

    tmpfs

    • 개념: 컨테이너의 임시 파일 시스템을 호스트의 RAM에 마운트.
    • 특징: 데이터는 RAM에만 저장되며, 컨테이너 종료 시 데이터 손실. 일시적인 데이터 저장에 유용.
    • 용도: 웹 서버 로그 파일, 캐시 파일 저장
    $ docker run --tmpfs [컨테이너 내 경로] [이미지이름]

    컨테이너 실행시 데이터 연결 방법

    1. 볼륨 생성 후 마운트
      • 장점: docker volume ls 명령어로 볼륨 조회 가능, 볼륨명 명시 가능.
      • 단점: 볼륨 관리 및 보안에 대한 추가 작업 필요, 용량 관리 필요.
      • 명령어:
      • # 볼륨 생성 docker volume create [볼륨이름] # 볼륨을 컨테이너에 마운트하여 실행 docker run -v [볼륨이름]:[컨테이너 내 경로] [이미지이름]
    2. 호스트 디렉토리와 컨테이너 경로를 직접 마운트
      • 장점: 호스트 디스크를 명시하여 원하는 경로에 마운트 가능.
      • 단점: docker volume ls로 조회되지 않음, 볼륨명 명시 불가.
      • 명령어:
      • # 호스트 디렉토리 미지정 시 (자동 임시 디렉토리 생성) docker run -v [컨테이너 내 경로] [이미지이름] # 호스트 디렉토리 명시 시 docker run -v [호스트 디렉토리]:[컨테이너 내 경로] [이미지이름]
    3. --volumes-from 옵션을 사용하여 볼륨 공유
      • 장점: 동일 데이터를 여러 컨테이너에서 공유 가능, 볼륨 공유가 간편.
      • 단점: 강력한 의존성으로 변경 시 영향이 있을 수 있음.
      • 명령어:
      • # 첫 번째 컨테이너 실행 docker run -v $HOME/host-volume1:/container-volume1 [이미지이름1] # 두 번째 컨테이너에서 첫 번째 컨테이너의 볼륨 공유 docker run --volumes-from=[이미지이름1] [이미지이름2]
    728x90