Docker (Image Layer)

Bro_Jang·2024년 7월 19일
0

Docker

목록 보기
5/5
post-thumbnail

Maximilian Schwarzmüller (2024). "Docker & Kubernetes : 실전 가이드" 인터넷 강의를 바탕으로 메모, 생각한 점을 기록해보는 글입니다.

이미지 빌드 후 코드의 변경사항

내가 작성한 코드에 변경사항이 있다고 가정해보자. 일반적인 경우, 내가 구축해놓은 이미지를 기반으로 컨테이너를 재시작해서 호스트를 재 호출했음에도 코드의 변경사항이 적용되지 않는다. docker ps로 실행중인 컨테이너를 확인하고 재시작해도 변경사항이 확인할 수 없다.

왜?

이미지가 작동하는 방식을 이해해야한다.
내가 작성한 도커파일을 요약자면 현재 경로에 있는 모든 파일들을 app폴더에 복사 후 npm install 이후 3000번의 포트를
열어 서버를 시작해야한다고 도커에 알려주는 것이다.

따라서 기본적으로 복사한 시점에 소스 코드의 snap shot을 만들었기 때문에 이미지를 다시 빌드하기 전까지는 코드의 변경사항을 확인할 수 없는 것이다.

Image Layer

Docker is Layer based. READ ONLY
이미지를 빌드하거나 재빌드할 때 변경된 부분의 명령과 그 이후의 모든 명령이 재평가된다는 뜻이다.

이미지를 삭제하고 build 후 해보니 빌드 시간이 1.2초 정도만큼 차이나는 것을 확인할 수 있다.

Docker는 Cache를 이용한다는 것을 확인.

도커는 모든 명령 결과를 캐시하고, 이미지를 다시 빌드할 때 명령어를 다시 실행할 필요가 없으면 캐시된 결과를 사용한다.

Layer기반 Architecture

Dockerfile을 아래와 같은 방식으로 수정한다면 npm install의 캐시된 결과를 사용할 수 있게된다.

profile
개발 해봐야지

0개의 댓글

관련 채용 정보