티스토리 뷰


쿠버네티스를 사용한 배포 프로젝트를 진행하면서 기존 소스코드를 수정할 일이 자주 발생했는데,

수정한 뒤 새로운 도커 이미지를 빌드해보니 새로운 코드가 하나도 반영되지 않았다.

다시 말해 소스 코드를 받아오는 git clone 명령어를 새로 실행하지 않고 캐싱된 기존 레이어를 그대로 가져와 쓴 것이다. 

 

🖥️Frontend Dockerfile 중 일부: git clone 하는 레이어

RUN git clone https://github.com/ash0814/SC_frontend.git

 

Dockerfile 자체가 바뀐 것은 하나도 없고, github의 내용이 바뀐 것이기 때문에

도커 입장에선 빌드할 때 캐싱된 기존 레이어를 가져와 쓰는 것은 당연했다. 

(실제로 빌드해 보면 로그에 'Layer already exists'가 뜬다.)

 

그렇기 때문에 수정된 내용을 반영하고 싶다면 이미지 빌드 전에

캐시 된 내용을 모두 지우고 도커를 초기화하는 명령어를 꼭 입력해줘야 한다.   

 

⚠️ 아래 명령어 사용 시 모든 Docker 리소스가 삭제되므로 주의해야 한다.

초기화는 복구할 수 없으므로 신중하게 사용해야 한다. 

 

나의 경우 모든 이미지를 빌드할 때마다 도커 허브에 push 해줬기 때문에 부담 없이 초기화할 수 있었다.

 

🔗도커 이미지 도커 hub에 push 하는 방법

 

[Docker] 도커 이미지 빌드부터 도커 허브에 Push 하는 방법 명령어 총 정리 | Dockerfile | DockerHub

쿠버네티스 배포 프로젝트를 진행하면서 도커 이미지를 사용해 각 컨테이너를 구성했는데 이 과정에서 도커 이미지를 여러 번 초기화해 빌드하고 도커 허브에 Push 해야 했다. 이 일련의 과정들

yuejeong.tistory.com


 

1) 모든 컨테이너 중단

$ sudo docker container stop $(sudo docker ps -a -q)

 

 

2) 모든 이미지 삭제 

$ sudo docker rmi -f $(sudo docker images -qa)

 

 

3) 모든 볼륨 삭제

$ sudo docker volume rm $(sudo docker volume ls -q)

 

 

4) 도커 리소스 일괄적으로 삭제

$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y

 

위 명령어를 차례대로 입력하고 이미지를 빌드하면 캐시 된 내용이 없으니 git clone을 정상적으로 실행하고 결과적으로 수정한 내용이 컨테이너에 잘 반영된다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함