이미지( image ) 와 컨테이너 ( container )
도커 이미지
컨테이너를 생성하는 데 사용되는 재사용 및 공유가 가능한 파일이다
도커 컨테이너
이미지 파일을 ' 실행 ' 한 소프트웨어 . 런타임 인스턴스
Layer
Docker 파일을 build 할 때 Dockerfile 에 적힌 코드 중 파일 시스템에 변화가 생기는 ( ADD , COPY , RUN , FROM ) 경우에 이미지 레이어를 생성한다
Cache
빌드 시 매번 모든 레이어를 빌드하면 속도가 느리다. Cache 는 각 레이어의 변경사항을 확인하고 변경이 없는 레이어는 재사용하여 빌드 속도를 높인다.
주의사항
빌드 시 Layor에 변경사항이 생기면 그 이후의 모든 레이어는 재사용되지 않는다. 따라서 변경되지 않았는데 다시 다운로드를 하는 경우가 생기게 된다.
효율적은 도커 세팅 실습
문제상황
backend 의 파일을 변경하고 docker build 를 다시하면 yarn install을 매번 반복하는 비효율이 발생한다.
원인
backend 파일을 가져오는 COPY . /myfolder 이후의 layer는 재사용되지 않았기 때문에 매번 yarn install 과정이 반복되었다.
해결방법
변경이 잦은 명령어를 가장 아래에 위치시켜서 cache 재사용을 늘리고 빌드 속도를 향상시킨다.
FROM node:14
COPY ./package.json /myfolder
COPY ./yarn.lock /myfolder
WORKDIR /myfolder
RUN yarn install
COPY . /myfolder ===> 변경이 잦은 레이어를 하단으로 이동
CMD yarn start:dev
전체 컨테이너를 삭제하는 명령어
docker rm `docker ps -a -q`
전체 이미지를 삭제하는 명령어
docker rmi `docker images -q`
이미지 + 컨테이너 + 캐시 모두 삭제 명령어
docker system prune -a
y
728x90
'Backend 백엔드' 카테고리의 다른 글
[ 25 ] MongoDB 연결 (0) | 2024.08.19 |
---|---|
[ 24 ] 백엔드와 데이터베이스 (0) | 2024.08.16 |
[ 22 ] Docker - API 패키징 (0) | 2024.08.16 |
[ 21 ] 도커 ( Docker ) (0) | 2024.08.15 |
[ 20 ] 가입 환영 이메일 전송 API ( nodemailer ) (0) | 2024.08.13 |