docker image rm
docker image rm
하나 이상의 이미지를 제거하는 명령이에요. 이미지에 여러 태그가 있으면 태그만 지우고, 태그가 하나뿐이면 이미지와 태그를 함께 지워요.
출처: 문서
본문
docker image rm은 호스트 노드에서 하나 이상의 이미지를 제거(및 언태그)해요. 이미지에 여러 태그가 있으면 태그를 파라미터로 지정한 이 명령은 태그만 제거해요. 태그가 이미지의 유일한 태그라면 이미지와 태그가 모두 제거돼요.
이 명령은 레지스트리에서는 이미지를 제거하지 않아요. 실행 중인 컨테이너의 이미지는 -f 옵션을 쓰지 않으면 제거할 수 없어요. 호스트의 모든 이미지를 보려면 docker image ls 명령을 사용해요.
docker image rm [OPTIONS] IMAGE [IMAGE...]
지원하는 옵션은 다음과 같아요.
| 옵션 | 기본값 | 설명 |
|---|---|---|
-f, --force |
이미지 제거를 강제로 수행 | |
--no-prune |
태그되지 않은 부모를 삭제하지 않아요 | |
--platform |
API 1.50+ 주어진 플랫폼 변형만 제거. os[/arch[/variant]] 형식 (예: linux/amd64) |
이미지는 짧거나 긴 ID, 태그, 다이제스트로 제거할 수 있어요. 이미지를 참조하는 태그가 하나 이상이면 이미지가 제거되기 전에 모두 제거해야 해요. 다이제스트 참조는 태그로 이미지를 제거할 때 자동으로 제거돼요.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test1 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)
test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)
test2 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)
$ docker rmi fd484f19954f
Error: Conflict, cannot delete image fd484f19954f because it is tagged in multiple repositories, use -f to force
2013/12/11 05:47:16 Error: failed to remove one or more images
$ docker rmi test1:latest
Untagged: test1:latest
$ docker rmi test2:latest
Untagged: test2:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)
$ docker rmi test:latest
Untagged: test:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8
-f 플래그를 쓰고 이미지의 짧거나 긴 ID를 지정하면, 이 명령은 지정한 ID와 일치하는 모든 이미지를 언태그하고 제거해요.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test1 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)
test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)
test2 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)
$ docker rmi -f fd484f19954f
Untagged: test1:latest
Untagged: test:latest
Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8
다이제스트로 풀한 이미지에는 태그가 없어요.
$ docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
localhost:5000/test/busybox <none> sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 4986bf8c1536 9 weeks ago 2.43 MB
다이제스트로 이미지를 제거하려면:
$ docker rmi localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
Untagged: localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
Deleted: 4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125
Deleted: ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2
Deleted: df7546f9f060a2268024c8a230d8639878585defcc1bc6f79d2728a13957871b
특정 플랫폼 제거 (--platform)
--platform 옵션은 이미지의 어떤 플랫폼 변형을 제거할지 지정할 수 있어요. 기본적으로 docker image remove는 존재하는 모든 플랫폼 변형을 제거해요. --platform 옵션으로 이미지의 어떤 플랫폼 변형을 제거할지 정할 수 있어요.
특정 플랫폼을 제거하면 같은 내용을 참조하는 모든 이미지에서 그 플랫폼이 제거되고, --force 옵션을 사용해야 해요. --force를 빼면 경고가 발생하고 제거가 취소돼요.
$ docker image rm --platform=linux/amd64 alpine
Error response from daemon: Content will be removed from all images referencing this variant. Use —-force to force delete.
플랫폼 옵션은 os[/arch[/variant]] 형식을 취해요. 예를 들어 linux/amd64 또는 linux/arm64/v8이에요. 아키텍처와 변형은 선택 사항이고, 생략하면 데몬 네이티브 아키텍처로 기본값을 정해요.
여러 플랫폼을 전달하려면 --platform 플래그를 여러 번 넘기거나, 제거할 플랫폼을 쉼표로 구분한 목록을 넘기면 돼요. 다음 두 사용법은 동일해요.
$ docker image rm --platform linux/amd64 --platform linux/ppc64le myimage
$ docker image rm --platform linux/amd64,linux/ppc64le myimage
다음 예제는 이미지 캐시에 여러 플랫폼 변형이 있는 alpine 이미지의 linux/amd64와 linux/ppc64le 변형을 제거해요.
$ docker image ls --tree
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:latest a8560b36e8b8 37.8MB 11.2MB U
├─ linux/amd64 1c4eef651f65 12.1MB 3.64MB U
├─ linux/arm/v6 903bfe2ae994 0B 0B
├─ linux/arm/v7 9c2d245b3c01 0B 0B
├─ linux/arm64/v8 757d680068d7 12.8MB 3.99MB
├─ linux/386 2436f2b3b7d2 0B 0B
├─ linux/ppc64le 9ed53fd3b831 12.8MB 3.58MB
├─ linux/riscv64 1de5eb4a9a67 0B 0B
└─ linux/s390x fe0dcdd1f783 0B 0B
$ docker image --platform=linux/amd64,linux/ppc64le --force alpine
Deleted: sha256:1c4eef651f65e2f7daee7ee785882ac164b02b78fb74503052a26dc061c90474
Deleted: sha256:9ed53fd3b83120f78b33685d930ce9bf5aa481f6e2d165c42cbbddbeaa196f6f
명령이 끝나면 alpine 이미지의 주어진 변형들은 이미지 캐시에서 제거돼요.
$ docker image ls --tree
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:latest a8560b36e8b8 12.8MB 3.99MB
├─ linux/amd64 1c4eef651f65 0B 0B
├─ linux/arm/v6 903bfe2ae994 0B 0B
├─ linux/arm/v7 9c2d245b3c01 0B 0B
├─ linux/arm64/v8 757d680068d7 12.8MB 3.99MB
├─ linux/386 2436f2b3b7d2 0B 0B
├─ linux/ppc64le 9ed53fd3b831 0B 0B
├─ linux/riscv64 1de5eb4a9a67 0B 0B
└─ linux/s390x fe0dcdd1f783 0B 0B