docker · Docker
오류 문구
failed to register layer: Error processing tar file(exit status 1): no space left on device
무슨 뜻인가
이미지 계층을 풀어 놓을 자리가 디스크에 없다는 뜻입니다. 대개는 프로젝트가 큰 것이 아니라 도커가 몇 달치 옛 이미지와 빌드 캐시, 그리고 지운 컨테이너의 볼륨을 계속 들고 있는 것입니다. docker system df가 이미지·컨테이너·볼륨·빌드 캐시별로 얼마씩 쓰고 무엇이 회수 가능한지 먼저 보여 주니 그것부터 읽으세요. docker system prune은 멈춘 컨테이너와 떠 있는 이미지, 안 쓰는 네트워크와 빌드 캐시를 지우는데 캐시가 사라진 다음 빌드는 눈에 띄게 느려지고, --volumes를 붙이면 컨테이너에 붙어 있지 않은 볼륨까지 지웁니다 — 사람들이 데이터베이스를 잃는 자리가 정확히 여기입니다.
고치는 명령
docker system df- 내는 도구
- docker
- Docker
- 12
docker의 오류는 어느 층에서 났는지를 먼저 갈라야 읽히는데 — 클라이언트가 데몬에 닿지 못한 것, 레지스트리가 거절한 것, 빌드 중에 RUN이 실패한 것, 컨테이너가 뜨자마자 죽은 것이 서로 다른 문제입니다 — 특히 빌드와 실행 단계의 오류는 문구 자체가 이유가 아니라 그 안에서 돌던 명령이 남긴 출력에 이유가 있고, 고치는 명령의 값도 층마다 다릅니다.
오류 문구를 읽는 법
- 첫 줄부터 읽습니다. 아래로 갈수록 도구 내부 이야기이고, 정작 원인은 맨 위에 적혀 있습니다.
- 파일 이름과 줄 번호가 있으면 거기가 시작점입니다 — 스택의 가장 위가 아니라, 내가 쓴 파일이 나오는 가장 위 줄입니다.
- 문구를 그대로 검색합니다. 다만 내 경로와 변수 이름은 지웁니다 — 그 부분이 검색을 방해합니다.
- 같은 문구가 도구 판마다 다르게 나옵니다. 검색 결과가 안 맞으면 판 번호를 함께 넣어 봅니다.
- 고치는 명령을 붙여 넣기 전에 그 명령이 무엇을 버리는지 확인합니다. 되돌릴 수 없는 것이 섞여 있습니다.
자주 묻는 질문
Q. failed to register layer: Error processing tar file(exit status 1): no space left on device 는 무슨 뜻인가요?
이미지 계층을 풀어 놓을 자리가 디스크에 없다는 뜻입니다. 대개는 프로젝트가 큰 것이 아니라 도커가 몇 달치 옛 이미지와 빌드 캐시, 그리고 지운 컨테이너의 볼륨을 계속 들고 있는 것입니다. docker system df가 이미지·컨테이너·볼륨·빌드 캐시별로 얼마씩 쓰고 무엇이 회수 가능한지 먼저 보여 주니 그것부터 읽으세요. docker system prune은 멈춘 컨테이너와 떠 있는 이미지, 안 쓰는 네트워크와 빌드 캐시를 지우는데 캐시가 사라진 다음 빌드는 눈에 띄게 느려지고, --volumes를 붙이면 컨테이너에 붙어 있지 않은 볼륨까지 지웁니다 — 사람들이 데이터베이스를 잃는 자리가 정확히 여기입니다.
Q. 어떻게 고치나요?
docker system df — 실행 전에 위의 설명에서 이 명령이 무엇을 버리는지 확인하세요.
Q. 어느 도구가 내는 오류인가요?
docker입니다. Docker 갈래에 있고, 문구는 15낱말입니다.