ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 컨테이너에서의 파일시스템의 격리 확인 실습
    Cloud/Container 2024. 8. 7. 08:11

    Docker 컨테이너에서 파일을 쓰고, 그 변화가 호스트 서버의 파일 시스템에서 어떻게 관리되는지 확인할 수 있는 예제를 만들어보겠습니다. 이 예제에서는 OverlayFS를 사용하여 파일 시스템의 Diff, Upper, Merged 레이어를 확인합니다.

    실습 단계

    1. Docker 설치 확인
      • Docker가 설치되어 있는지 확인합니다. 설치되어 있지 않다면 Docker 설치 가이드를 참고하여 설치합니다.
    2. 간단한 Docker 컨테이너 실행
      • 터미널을 열고 다음 명령어를 실행하여 alpine 이미지를 사용한 간단한 컨테이너를 실행합니다.
        docker run -it --name test-container alpine
    3. 컨테이너 내에서 파일 생성
      • 컨테이너 내에서 test-file.txt라는 파일을 생성하고 내용을 작성합니다.
        echo "Hello from the container" > /test-file.txt
        exit
    4. 컨테이너의 레이어 확인
      • 먼저, 컨테이너의 ID를 확인합니다.
      • CONTAINER_ID=$(docker ps -aqf "name=test-container") echo "Container ID: $CONTAINER_ID"
      • 컨테이너의 파일 시스템이 저장된 경로를 확인합니다. 일반적으로 Docker는 /var/lib/docker 디렉토리 아래에 데이터를 저장합니다.
      • sudo ls /var/lib/docker/overlay2
    5. Upper 및 Merged 디렉토리 확인
      • OverlayFS의 Upper, Diff, Merged 디렉토리를 확인합니다. 정확한 디렉토리 이름은 다를 수 있지만, 다음과 같이 확인할 수 있습니다.
      • # Upper 디렉토리 확인 UPPER_DIR=$(sudo find /var/lib/docker/overlay2 -name "diff" -path "*/diff" | grep $CONTAINER_ID) echo "Upper Directory: $UPPER_DIR" # Merged 디렉토리 확인 MERGED_DIR=$(sudo find /var/lib/docker/overlay2 -name "merged" -path "*/merged" | grep $CONTAINER_ID) echo "Merged Directory: $MERGED_DIR" # Diff 디렉토리 확인 DIFF_DIR=$(sudo find /var/lib/docker/overlay2 -name "diff" -path "*/diff" | grep $CONTAINER_ID) echo "Diff Directory: $DIFF_DIR"
    6. 파일 내용 확인
      • Upper, Diff, Merged 디렉토리에서 생성한 파일의 내용을 확인합니다.
      • echo "Checking Upper Directory" sudo cat $UPPER_DIR/test-file.txt echo "Checking Merged Directory" sudo cat $MERGED_DIR/test-file.txt echo "Checking Diff Directory" sudo cat $DIFF_DIR/test-file.txt

    예제 결과

    1. 컨테이너 실행 및 파일 생성 후:
      echo "Hello from the container" > /test-file.txt
      exit
    2. docker run -it --name test-container alpine
    3. 컨테이너 ID 확인 후:출력:
    4. Container ID: 1a2b3c4d5e6f
    5. CONTAINER_ID=$(docker ps -aqf "name=test-container") echo "Container ID: $CONTAINER_ID"
    6. Upper, Merged, Diff 디렉토리 확인 후:
    7. UPPER_DIR=$(sudo find /var/lib/docker/overlay2 -name "diff" -path "*/diff" | grep $CONTAINER_ID) echo "Upper Directory: $UPPER_DIR" MERGED_DIR=$(sudo find /var/lib/docker/overlay2 -name "merged" -path "*/merged" | grep $CONTAINER_ID) echo "Merged Directory: $MERGED_DIR" DIFF_DIR=$(sudo find /var/lib/docker/overlay2 -name "diff" -path "*/diff" | grep $CONTAINER_ID) echo "Diff Directory: $DIFF_DIR"
    8. 파일 내용 확인 후:출력:
    9. Checking Upper Directory Hello from the container Checking Merged Directory Hello from the container Checking Diff Directory Hello from the container
    10. echo "Checking Upper Directory" sudo cat $UPPER_DIR/test-file.txt echo "Checking Merged Directory" sudo cat $MERGED_DIR/test-file.txt echo "Checking Diff Directory" sudo cat $DIFF_DIR/test-file.txt

    이 실습을 통해 Docker 컨테이너에서 파일을 생성한 후, 호스트 파일 시스템에서 해당 파일이 어떻게 OverlayFS의 Diff, Upper, Merged 레이어에 나타나는지 확인할 수 있습니다.

Designed by Tistory.