Docker image 삭제가 필요해!

Sorbet·2022년 2월 16일
0

사이드 프로젝트에서 도커파일을 빌드했는데..

  • 사이드 프로젝트에서 도커를 도입했다. 찐하게 쓴건 아니고 간단히 repo 최상단 위치에 DockerFile 하나 얹은 정도로해서 실행하기 편하도록 만든건데, 이게 개발하는 입장에서는 당연히 테스트해봐야하니까 빌드를 많이 했었고, 빌드 결과물들이 어떻게 남아있을지는 신경쓰지 못했었다.



Docker build 이미지는 자동으로 삭제가 안되는구나

  • 도커 base이미지에다가 + 내가 필요한 jar파일 등등을 올려서 나만의 Custom Docker file 을 빌드하는데, 매번 빌드할때마다 각각의 이미지파일들은 삭제되지 않고 그대로 내 컴퓨터에 남아있게 된다

480MB 짜리 도커파일들이 엄청 많은데 이게 다 생성되는동안 아무것도 몰랐다..

22개니까 어림잡아 11기가 정도 공간낭비

docker images | grep 480 | wc -l
  • 480 메가짜리 파일이 몇개인지 확인하는 명령어



명령어 11번 치는건 시간낭비이니까 좀더 우아하게 제거하자

 awk -F' ' '{print $3}'
  • 위 명령어를 쓰면 구분자가 <space> 로 나뉘어진 3번째 항목만을 추출하는 명령어인데, 이를 사용하면 Docker Image ID를 추출해낼수 있다
  • Image ID를 추출 해낸뒤 docker rmi 명령어 뒤에 붙여넣기를 해줬다.

  • 좀더 멋지게 한줄명령어로 해결할수 있을꺼같긴 한데 요즘은 많이 안써서 생각이 안난다... ㅠㅠ
DOCKER_DEL=($(docker images | grep 480 | awk -F' ' '{print $3}'))

DOCKER_DEL 이라는 변수에 Docker Image ID 를 쭉 저장하고

echo $DOCKER_DEL

Docker Image ID 를 읽어오는데, 쉘 특성상 개행문자를 자동으로 스페이스로 치환해서 저장해준다.

  • 해당 echo 명령어의 결과로 삭제할 Docker Image ID 들이 반환되므로 이를 docker rmi [images..] 명령어의 옵션으로 사용하면 끝!


그 결과

우아하게 삭제 완료!

profile
Sorbet is good...!

0개의 댓글