티스토리 뷰
[Docker] 도커 이미지 새로운 버전 빌드 하기 전 입력해야 하는 필수 명령어 | Git clone 새로운 내용 반영 안될 때 | Docker rmi | Docker prune
YouJungJang 2023. 12. 10. 13:49쿠버네티스를 사용한 배포 프로젝트를 진행하면서 기존 소스코드를 수정할 일이 자주 발생했는데,
수정한 뒤 새로운 도커 이미지를 빌드해보니 새로운 코드가 하나도 반영되지 않았다.
다시 말해 소스 코드를 받아오는 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 하는 방법
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을 정상적으로 실행하고 결과적으로 수정한 내용이 컨테이너에 잘 반영된다.
'Study > Docker' 카테고리의 다른 글
[Docker] 도커 이미지 빌드부터 도커 허브에 Push 하는 방법 명령어 총 정리 | Dockerfile | DockerHub (0) | 2023.12.09 |
---|