-
Docker 컨테이너에서의 파일시스템의 격리 확인 실습Cloud/Container 2024. 8. 7. 08:11
Docker 컨테이너에서 파일을 쓰고, 그 변화가 호스트 서버의 파일 시스템에서 어떻게 관리되는지 확인할 수 있는 예제를 만들어보겠습니다. 이 예제에서는 OverlayFS를 사용하여 파일 시스템의
Diff
,Upper
,Merged
레이어를 확인합니다.실습 단계
- Docker 설치 확인
- Docker가 설치되어 있는지 확인합니다. 설치되어 있지 않다면 Docker 설치 가이드를 참고하여 설치합니다.
- 간단한 Docker 컨테이너 실행
- 터미널을 열고 다음 명령어를 실행하여
alpine
이미지를 사용한 간단한 컨테이너를 실행합니다.docker run -it --name test-container alpine
- 터미널을 열고 다음 명령어를 실행하여
- 컨테이너 내에서 파일 생성
- 컨테이너 내에서
test-file.txt
라는 파일을 생성하고 내용을 작성합니다.echo "Hello from the container" > /test-file.txt exit
- 컨테이너 내에서
- 컨테이너의 레이어 확인
- 먼저, 컨테이너의 ID를 확인합니다.
CONTAINER_ID=$(docker ps -aqf "name=test-container") echo "Container ID: $CONTAINER_ID"
- 컨테이너의 파일 시스템이 저장된 경로를 확인합니다. 일반적으로 Docker는
/var/lib/docker
디렉토리 아래에 데이터를 저장합니다. sudo ls /var/lib/docker/overlay2
- 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"
- OverlayFS의
- 파일 내용 확인
- 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
예제 결과
- 컨테이너 실행 및 파일 생성 후:
echo "Hello from the container" > /test-file.txt exit
docker run -it --name test-container alpine
- 컨테이너 ID 확인 후:출력:
Container ID: 1a2b3c4d5e6f
CONTAINER_ID=$(docker ps -aqf "name=test-container") echo "Container ID: $CONTAINER_ID"
- Upper, Merged, Diff 디렉토리 확인 후:
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"
- 파일 내용 확인 후:출력:
Checking Upper Directory Hello from the container Checking Merged Directory Hello from the container Checking Diff Directory Hello from the container
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
레이어에 나타나는지 확인할 수 있습니다.'Cloud > Container' 카테고리의 다른 글
Docker cgroup v2 및 namespace 실습 가이드 (Ubuntu 24.04) (0) 2024.08.06 docker run 명령으로 띄운 컨테이너가 프로세스 임을 확인할 수 있는 실습 (0) 2024.08.06 Docker 이미지를 수정하여 Docker Hub로 푸시하는 실습. (0) 2023.02.13 Docker를 사용하여 간단한 웹 애플리케이션을 만드는 단계별 실습 (0) 2023.02.12 chroot 명령어로 도커 컨테이너와 유사한 환경을 만들어보는 실습 (0) 2023.02.07 - Docker 설치 확인