chroot로 컨테이너 기초 환경 만들기

kauze98·2025년 9월 1일

AWS 실습

목록 보기
16/16

chroot로 배우는 컨테이너의 기초

Docker 같은 컨테이너 기술은 사실 리눅스의 기본 기능을 잘 조합해서 만든 것입니다.
그 출발점이 바로 chroot입니다. 오늘은 Amazon Linux EC2에서 직접 chroot를 이용해 최소 컨테이너 환경을 만들어 보겠습니다.


chroot로 컨테이너 기초 환경 만들기

0 .실습 환경 만들기

  1. 키페어 생성
    ------

  2. 인스턴스 생성

  3. 보안그룹 생성

  4. mobaxterm 사용

1. chroot란?

Change Root의 줄임말

특정 디렉토리를 루트(/)로 바꿔서 그 안에서 프로세스를 실행

즉, ls /를 입력해도 실제 호스트의 /가 아니라 chroot 디렉토리 내부를 보여줌

👉 컨테이너의 기본 아이디어인 파일시스템 격리의 시작점

2. 실습 환경 준비

Amazon Linux 2023 EC2 기준으로 진행했습니다.

# tree 유틸리티 설치 (디렉토리 구조 확인용)
sudo yum install -y tree

3. 최소 실행환경 만들기

# 실행환경 디렉토리 생성
mkdir -p app/{bin,lib64}

# 구조 확인:
tree app

app
├── bin
└── lib64


# bash 복사
cp /bin/bash app/bin/

4. 필요한 라이브러리 확인

bash가 실행되려면 여러 라이브러리가 필요합니다. ldd로 확인해봅니다.

ldd /bin/bash


# 출력 예시:
linux-vdso.so.1 (0x00007ffd40d05000)
libtinfo.so.6 => /lib64/libtinfo.so.6
libc.so.6 => /lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2

5. 라이브러리 복사

필요한 라이브러리를 app/lib64/에 넣습니다.

cp /lib64/{libtinfo.so.6,libc.so.6,ld-linux-x86-64.so.2} app/lib64/

6. chroot 실행

이제 app 디렉토리를 루트로 해서 진입합니다.

sudo chroot app /bin/bash

bash-5.2#

pwd
# 출력: /

6. 결과와 한계

bash는 실행되지만, ls, cat 같은 명령어는 없습니다.

이유: 아직 /bin/ls, /bin/cat 같은 실행파일과 그 라이브러리를 안 넣었기 때문.

즉, 필요한 실행파일과 라이브러리를 하나씩 추가해주면 점점 "작동하는 컨테이너"에 가까워집니다.


7. 컨테이너와의 관계

  • chroot는 파일시스템만 격리합니다.

  • 컨테이너(Docker): chroot 개념 + 리눅스 namespace, cgroups, overlayfs를 조합

    -PID namespace → 프로세스 격리
    -Network namespace → 네트워크 격리
    -User namespace → 사용자 격리
    -cgroups → CPU, 메모리 제한
    -OverlayFS → 이미지 레이어 구조

👉 즉, 컨테이너는 “chroot에서 출발해 더 많은 기능을 붙인 것”입니다.

profile

0개의 댓글