테키테크 TEKITECH

[Docker] 도커 이미지 삭제와 오류 / 컨테이너 확인하고 컨테이너 삭제하기 본문

Tech/Ops

[Docker] 도커 이미지 삭제와 오류 / 컨테이너 확인하고 컨테이너 삭제하기

TEKI 2021. 9. 10. 11:17

도커를 다루기 시작하면서 가장 많이 보게 된 오류 메시지 중 하나는 이거였다.

$ docker rmi tekidocker:0.1

Error response from daemon: conflict: unable to remove repository reference "tekidocker:0.1" (must force) - container 05f6b2f871d6 is using its referenced image 3f865154a216

도커 이미지 tekidocker:0.1을 지우려고 시도했고, 이미 그 이미지로 만든 도커 컨테이너가 있기 때문에 지울 수 없다는 뜻이다.
*tekidocker:0.1은 임의로 지은 이름이고, 지우려는 대상 이미지의 이름이나 이미지 ID를 사용하면 된다.

이 이미지를 지우려면 두 가지 방법이 있다.
도커 컨테이너 기초 실습을 하면서 이 방법에 대해서 알아보긴 했지만 좀 더 자세하게 풀어보고 싶었다.

 

1. 강제로 지우기: -f

첫 번째 방법은 도커가 제안한 "must force", 즉 강제로 지우는 방법이다.
강제 옵션만 주면 되기 때문에 매우 간단하다.

docker rmi -f tekidocker:0.1

 

2. 관련된 컨테이너를 모두 삭제하고 이미지 삭제하기

두 번째 방법은 문제가 되는 도커 컨테이너를 모두 삭제해서 오류를 해결하는 방법이다.

[1] 도커 컨테이너 확인

먼저 컨테이너 목록을 확인해보자.

docker container ls -a

도커에 있는 모든 컨테이너를 확인해보면 목록이 엄청 많이 나온다.
그중에서 지우려는 이미지로 만든 도커만 찾아내 보자.
*도커 이미지의 이름과 ID 둘 다 확인해보는 걸 추천한다.
 혹시라도 놓친 컨테이너가 없어야 도커 이미지 삭제를 시도했을 때 같은 오류가 나서 두 번 확인하는 일을 방지할 수 있다.

# 하나씩 확인하기
docker container ls -a | grep [도커 이미지 이름 또는 ID]

# grep의 or 조건을 활용해 한 번에 확인하기
docker container ls -a | grep -e [도커 이미지 이름] -e [도커 이미지 ID]

 

[2] 도커 컨테이너 삭제

이렇게 찾은 도커 컨테이너를 모두 지워주자.

docker rm [컨테이너 이름 또는 ID]

개수가 많다면 이렇게도 할 수 있다.
*도커 컨테이너의 이름 또는 ID를 띄어쓰기로 구분하여  나열한다

docker rm [컨테이너 1] [컨테이너 2] [...]

 

[3] 도커 이미지 삭제

도커 컨테이너를 모두 지웠으면 이제 도커 이미지를 삭제할 수 있다.

docker rmi tekidocker:0.1

 

반응형
Comments