구리의 창고

Docker Image - repository 이름으로 삭제하기 본문

DevOps

Docker Image - repository 이름으로 삭제하기

구리z 2017. 8. 4. 11:26

소개

Docker를 이리저리 쓰다보면 이미지가 너무 많이 생기는 경우가 발생한다. 그리고 특정 Repository를 검색해 삭제하고 싶을 때도 있다. 자체 명령어에 filter 옵션이 있긴하지만 이걸로는 턱없이 부족한 감이 있다. 리눅스 유틸리티와 조합하면 쉽게 해낼 수 있다.

테스트 환경

일단 Docker 이미지 목록을 확인하려면 docker images로 현재 목록을 확인해야한다. 아래처럼 5개의 이미지가 있다.
$ docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
busybox                          1.0.1               efe10ee6727f        2 weeks ago         1.13 MB
busybox                          1.0.2               efe10ee6727f        2 weeks ago         1.13 MB
busybox                          1.0.5               efe10ee6727f        2 weeks ago         1.13 MB
busybox                          latest              efe10ee6727f        2 weeks ago         1.13 MB
freebox                          latest              efe10ee6727f        2 weeks ago         1.13 MB
busybox와 freebox 이미지가 있는데, 여기서 busybox 이미지만 지워보도록 하자. 여기서 사용 할 유틸리티는 awk 이다.

awk

인풋을 정규식으로 검색하고 공백을 기준으로 n번째 문자열을 출력 할 때 유용한 함수이다. 아래 예제는 공백 기준 2번째 값에 what이 있는지 확인 후 1번째 값을 출력한다.
$ echo 'Hello! what are you doing now?' | awk '$2 ~ /what/ {print $1}'
Hello!

이미지 확인

docker images 출력의 첫 번째 값이 busybox면 확인차 출력하도록한다.
$ docker images | awk '$1 ~ /busybox/ {print $1, $3}'
busybox efe10ee6727f
busybox efe10ee6727f
busybox efe10ee6727f
busybox efe10ee6727f

이미지 삭제

$ docker rmi `docker images | awk '$1 ~ /busybox/ {print $3}'`
Untagged: busybox:1.0.1
Untagged: busybox:1.0.2
Untagged: busybox:1.0.5
Untagged: busybox:latest
Untagged: busybox@sha256:2605a2c4875ce5eb27a9f7403263190cd1af31e48a2044d400320548356251c4
Deleted: sha256:efe10ee6727fe52d2db2eb5045518fe98d8e31fdad1cbdd5e1f737018c349ebb
Deleted: sha256:08c2295a7fa5c220b0f60c994362d290429ad92f6e0235509db91582809442f3


Comments