강의/Docker & Kubernetes : 실전 가이드

[46] 데모 앱 구축 & 이해하기

JJIMJJIM 2025. 2. 20. 20:16
728x90
반응형

데모 앱 구축 & 이해하기

Docker 컨테이너와 호스트 시스템 간의 파일 시스템 격리 이해하기

 

컨테이너 파일 시스템의 특징

격리된 환경

  • 컨테이너는 독립적인 파일 시스템 보유
  • 호스트 시스템과 완전히 분리
  • 이미지 빌드 시점의 스냅샷 사용

 

파일 접근

app.use(express.static('public'));
// feedback 폴더에 엑세스할 수 있는 명령
// 이 웹앱의 사용자는 이 폴더에 저장된 파일을 볼 수 있다.
app.use('/feedback', express.static('feedback')); 
app.post('/create', async (req, res) => {
  const title = req.body.title;
  const content = req.body.text;

  const adjTitle = title.toLowerCase();

  const tempFilePath = path.join(__dirname, 'temp', adjTitle + '.txt');
  const finalFilePath = path.join(__dirname, 'feedback', adjTitle + '.txt');

  await fs.writeFile(tempFilePath, content);
  exists(finalFilePath, async (exists) => {
    if (exists) {
      res.redirect('/exists');
    } else {
      await fs.rename(tempFilePath, finalFilePath);
      res.redirect('/');
    }
  });
});
  • 컨테이너 내부에서만 파일 접근 가능
  • 호스트 시스템에서 직접 접근 불가

 

작동 방식

이미지 빌드 과정

  • 로컬 파일을 이미지로 복사
  • 스냅샷 생성
  • 이후 호스트와 연결 해제

컨테이너 실행

  • 이미지 기반으로 독립 환경 생성
  • 자체 파일 시스템 사용
  • 호스트와 격리된 상태 유지

 

주요 특징

데이터 격리

  • 컨테이너 내 생성된 파일은 컨테이너 내부에만 존재
  • 호스트 시스템에 자동 반영되지 않음
  • 의도된 격리 정책

코드 변경 반영

  • 소스 코드 변경 시 이미지 재빌드 필요
  • 컨테이너 재시작 필요
  • 자동 동기화 없음

 

이러한 격리는 Docker의 핵심 개념이지만, 때로는 데이터 공유가 필요한 경우 볼륨(Volume)을 사용하여 해결할 수 있습니다.

 

 

 

참고

https://www.udemy.com/course/docker-kubernetes-2022

 

728x90
반응형