| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- DesignPattern
- 헤드퍼스트
- 직장인
- 성수직장인
- JavaScript
- 책읽기
- 헤드퍼스트디자인패턴
- 객체지향프로그래밍
- Linux
- 성수
- 성수볼거리
- 책너두
- docker
- 코딩
- 객체지향
- JAVA개발자
- Java
- 개발자
- 독서일지
- 디자인패턴
- 클린코드
- 깨끗한코드
- 성수핫플
- 상속
- 주니어개발자
- 오브젝트
- 독서
- 직장인점심
- 성수맛집
- IntelliJ
- Today
- Total
런타임노트
[Docker] none image 본문


어느순간 생성한 image 목록을 보니 누가 생성했는지도 모르는 <none>:<none> 이미지들이 증식되어있었다.
<none> image가 뭔데?
<none>:<none> 이미지는 어떤 코드에서든 더 이상 참조되지 않는 이미지이다.
docker build를 하거나 이미지를 pull했을 때 생겨난다.
현재 도커 이미지의 상황을 보면

IMAGE ID가 7184b27319b4 이고 이름이 test:0.1 인 이미지가 있다.
이 이미지의 Dockerfile을 일부 수정하고,
sudo docker build --tag test:0.1 ./ 이미지를 재생성 해주면

다음과 같이 원래 test:0.1의 ID였던 7184b27319b4 가 <none>의 이름으로 변경된 것을 볼 수가 있다.
즉,
빌드 이전에는 ID가 7184b27319b4인 이미지를 우리가 test라는 이름으로 참조할 수 있었지만,
test이미지가 재생성되면서 test라는 이름이 다른 이미지로 옮겨갔고,
7184b27319b4 이미지는 아무도 참조하지 않는 이름없는 <none> 이미지가 되어버린것이다.
이와 같은 <none>:<none> 이미지를 dangling image 라 하며,
dangling: 매달려있는. 마치 누가 이미지를 절벽에서 밀었는데 가까스로 나뭇가지를 잡고 매달려있는 모습이 형상된다.
슬프지만 쓸 때 없이 디스크 공간을 잡아먹기 때문에 수시로 prune해주는 것이 좋다.
(prune: 일명 가지치기)
JAVA 같은 경우는 아무도 참조하지 않는 할당된 메모리인 경우 garbage collector가 자동으로 정리해주지만 docker는 가비지 콜렉터가 없기 때문에 dangling image들을 수동으로 지워주어야 한다.
지우는 명령어는 sudo docker rmi $(sudo docker images -f "dangling=true" -q) --force 이다.
- sudo : root 계정이 아닐 경우에 붙여주는데, $( 다음에 오는 docker images 앞에도 반드시 붙여주어야 한다. (나 같은 경우는 계속 에러나길래 알고보니까 뒤에 sudo 안 붙여줘서 였다.)
- rmi: 이미지 삭제
- -f : filter. dangling=true로 dangling 이미지 목록만 보여준다.
- -q: IMAGE ID 목록만 보여준다.
'클라우드 > Docker' 카테고리의 다른 글
| docker0 : 컨테이너는 어떻게 통신하나요? (0) | 2023.06.29 |
|---|---|
| Dockerfile 이용하여 이미지 빌드하기 (0) | 2023.06.29 |
| [Docker] docker에 대해 간단히 정리해보았다. (4) | 2023.05.23 |
| [오류] Error response from daemon: conflict: unable to delete a5538e62c9c1 (cannot be forced) - image has dependent child images (0) | 2023.05.23 |
| [Docker] Windows docker desktop 설치하기 (WSL2, Ubuntu 활용) (0) | 2023.05.23 |