요즘 도커 이미지를 빌드할일이 아주 많은데, 갑자기 아래와 같은 에러가 발생했습니다.

failed to register layer: Error processing tar file(exit status 1): write /usr/local/arachni/system/gems/gems/ffi-1.9.18/lib/ffi_c.so: no space left on device

음... 결국은 no space left on device 요게 핵심인 것 같은데요, PC 용량은 넉넉하지만 왜 공간이 없다는지 의아했습니다.
구글링을 해본 결과 쓸만한 답안을 하나 구했습니다.

저 에러는 MacOS 종특이며, Docker 자체의 할당된 용량 이상으로 이미지가 남아있어 빌드 시 용량이 없다고 나오는것입니다. 관련 파일은 Docker.qcow2 파일이며 아래 디렉토리에 있습니다.

># ll ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
-rw-r--r--@ 1 blank  staff    64G  8 16 17:57 /Users/blank/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

용량을 같이 체크해보니.. 64GB를 차지하고 있었죠. (한 60G 이상부터 발생하는 에러라고 하네요)

Docker.qcow2 파일은 Docker 이미지를 정보를 가지고 있고 삭제 시 로컬에 저장된 모든 이미지가 날아갑니다.

># rm -rf ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Docker.qcow2 파일은 도커 재시동 시 다시 생성되기 때문에 지우셔도 크게 문제 없습니다

어차피 remote로 떙겨서 빌드하기 떄문에 상관없다 판단하고 진행한 결과 잘 해결된듯 합니다.. 다만, 로컬에서만 commit 한 이미지가 날라가버렸네요 ㅜㅜ


개빡.. 요즘 자주 안써서 존재 유무조차 잊어버린듯, 테스팅용이라 중간중간 손봐뒀던건데 아쉽네요 핳

이런 일을 예방하기 위해선 주기적으로 불필요한 이미지에 대해서 정리가 필요합니다. 아래 링크보시면 잘 나와있습니다.

https://stackoverflow.com/questions/30604846/docker-error-no-space-left-on-device

대충 스크립트화 해보면..
# 볼륨제거
echo "remote volumn"
docker volume rm $(docker volume ls -qf dangling=true)

# 이미지 제거
echo "remote docker images"
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
docker images -a | sed '1 d' | awk '{print $3}' | xargs -L1 docker rmi -f

Reference

https://blog.outsider.ne.kr/1295

댓글 없음:

댓글 쓰기