Backend 백엔드

[ 23 ] 효율적인 도커 세팅, 이미지와 컨테이너 삭제 명령어

박민우_ 2024. 8. 16. 21:49

이미지( 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