강의/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
반응형