강제 옵션을 사용하여 ID 로 이미지 제거
이 단계에서는 Docker 이미지를 이미지 ID 를 사용하여 제거하는 방법, 특히 필요한 경우 강제 옵션 (-f 또는 --force) 을 사용하는 방법을 배우겠습니다. ID 로 제거하는 것은 여러 태그가 동일한 이미지를 가리키는 경우 특히 제거하려는 이미지를 정확하게 지정하려는 경우 유용합니다.
먼저, ID 로 제거할 수 있는 이미지를 가져와 보겠습니다. ubuntu 이미지를 사용합니다. 이미 가지고 있다면 가져오기가 빠를 것입니다.
docker pull ubuntu
이제 이미지를 나열하여 ubuntu 이미지의 이미지 ID 를 얻습니다.
docker images
출력에서 ubuntu 이미지를 찾고 해당 IMAGE ID를 기록해 둡니다. 이는 긴 16 진수 문자열입니다. 이미지를 고유하게 식별하려면 처음 몇 자 (일반적으로 3 자 이상) 만 있으면 됩니다.
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 270000000000 2 weeks ago 77.8MB
먼저 강제 옵션 없이 ID 를 사용하여 이미지를 제거해 보겠습니다. YOUR_IMAGE_ID를 docker images 출력에서 기록한 실제 이미지 ID 로 바꿉니다.
docker rmi YOUR_IMAGE_ID
이미지가 실행 중이거나 중지된 컨테이너에서 사용되지 않는 경우 이 명령은 성공하고 이미지를 제거할 가능성이 높습니다. 그러나 이 이미지를 기반으로 하는 컨테이너가 있는 경우 이미지가 컨테이너에서 사용되고 있으므로 제거할 수 없다는 오류 메시지가 표시됩니다.
강제 옵션의 사용을 보여주기 위해 먼저 ubuntu 이미지를 기반으로 하는 컨테이너를 실행해 보겠습니다.
docker run -d ubuntu sleep 3600
이 명령은 분리 모드 (-d) 에서 Ubuntu 컨테이너를 실행하고 한 시간 동안 (sleep 3600) 실행 상태를 유지합니다.
이제 강제 옵션 없이 ID 로 ubuntu 이미지를 다시 제거해 보십시오.
docker rmi YOUR_IMAGE_ID
다음과 유사한 오류 메시지를 받게 됩니다.
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - image is referenced by one or more containers: 000000000000 (created ...)
이 오류는 컨테이너가 이미지를 사용하고 있기 때문에 발생합니다. 컨테이너에서 사용 중인 이미지를 제거하려면 강제 옵션 (-f) 을 사용해야 합니다.
이제 강제 옵션과 함께 ID 를 사용하여 이미지를 제거해 보겠습니다. YOUR_IMAGE_ID를 실제 이미지 ID 로 바꿉니다.
docker rmi -f YOUR_IMAGE_ID
강제 옵션은 컨테이너에서 사용 중인 경우에도 Docker 가 이미지를 제거하도록 지시합니다. Docker 는 먼저 이미지를 사용하고 있는 모든 컨테이너를 중지하고 제거한 다음 이미지 자체를 제거합니다. 출력은 이미지와 해당 레이어가 삭제되었음을 표시합니다.
Untagged: ubuntu:latest
Deleted: sha256:2700000000000000000000000000000000000000000000000000000000000000
Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
... (more Deleted lines)
ubuntu 이미지가 사라졌는지 확인하기 위해 이미지를 다시 나열합니다.
docker images
ubuntu 이미지가 더 이상 목록에 없어야 합니다.
강제 옵션은 추가 확인 없이 컨테이너를 중지하고 제거하므로 주의해서 사용해야 합니다.