docker devmapper 및 CentOS7의 공간 문제


103

도커를 배우고 있고 v1.11.0을 사용하고 있는데 hadoop을 설치하려고하는데 devmapper가 여유 디스크 공간에 대해 불평하고 있습니까?

devmapper: Thin Pool has 82984 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

모든 이미지를 삭제했지만 문제가 지속됩니다.

[root@localhost hadoop_docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              47af6ca8a14a        3 weeks ago         125 MB
[root@localhost hadoop_docker]#

그리고 이것은 내 디스크 구성입니다.

[root@localhost ~]# lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0    8G  0 disk
├─sda1                       8:1    0  500M  0 part /boot
└─sda2                       8:2    0  7.5G  0 part
  ├─centos-root            253:0    0  6.7G  0 lvm  /
  └─centos-swap            253:1    0  820M  0 lvm  [SWAP]
sr0                         11:0    1 1024M  0 rom
loop0                        7:0    0  100G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm
loop1                        7:1    0    2G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm

질문 : 디스크 공간을 어떻게 확보 할 수 있습니까?

감사합니다


1
이것은 또한 루프백 복구 불가능한 스토리지 문제의 devicemapper와 관련이 있습니까? github.com/docker/docker/issues/3182 " devicemapper 는 프로덕션 용도로 권장되지 않습니다." 몇 가지 이유로 devicemapper에서 벗어나는 것이 좋습니다. 물론 오버레이 스토리지 드라이버, YMMV로 전환하는 것이 쉽지만 너무 많이는 아니길 바랍니다. 'rm -rf / var / lib / docker'는 전환 할 때 다소 선택 사항이지만 쉬우므로 적극 권장합니다. projectatomic.io/blog/2015/06/...
— gaoithe

1
참고로 " sudo lvs"로 가상 풀 디스크 사용량을 확인할 수 있습니다 . 이것은 정리해야 할 디스크 공간을 "얼마나"(주어진 답변을 사용하여) 알아 내려고 할 때 도움이됩니다.
— Aaron D. Marasco 2011

답변:


28

당신이 사용할 수있는:

docker system prune -a -f --volumes

어디:

  • -a == 사용하지 않는 모든 이미지를 제거합니다.
  • -f == 힘
  • --volumes == 볼륨 정리.

참조 : https://docs.docker.com/engine/reference/commandline/system_prune/#description

참고로 환경에서 devicemapper 드라이버를 사용할 때 많은 문제가 발생했습니다. 내가 언급했듯이 청소하곤했지만 여전히 다른 devicemapper 문제가있었습니다. overlay2로 이동하는 것이 좋습니다. 거의 모든 것이 완전히 해결되었습니다.


1
우리는 @ Cokoda-Raka의 대답에있는 명령을 정기적으로 실행하지만 특정 Docker 호스트 하나만 있으면 overaly2가 필요한 것보다 많은 양의 디스크 공간을 사용할 때이 명령이 필요했습니다. 이 명령을 자동화 된 정리 작업에도 추가 할 것이라고 생각합니다.
— StockB

1
이는 Docker 1.13.1이 설치된 RHEL 7에서 도움이되었습니다. 실행 한 후 docker container prune, docker image prune, docker volume prune, 우리는 여전히 devmapper / 얇은 풀 오류가 발생했습니다. 위의 명령이 작동하여 필요한 공간을 정리하고 데몬을 다시 시작할 필요가 없습니다.
— 조나단 엘모어

167

이 세 가지를 실행하십시오. RUNNING 컨테이너를 제거 할 필요가 없습니다.

  1. 종료 된 프로세스 정리 :

    docker rm $(docker ps -q -f status=exited)
    
  2. 매달린 볼륨 정리 :

    docker volume rm $(docker volume ls -qf dangling=true)
    
  3. 매달린 이미지 정리 :

    docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    


19
버전 1.13에서는 이제 docker system prune docs.docker.com/engine/reference/commandline/system_prune
— Vivek Kodira

1
이것은 아마도 받아 들여진 대답 일 것입니다. 다른 대답은 잠재적으로 죽이려는 것보다 더 많은 컨테이너를 죽일 수 있습니다.
— DigitalFiz

2
이 명령은 시스템의 디스크를 정리하는 데 매우 유용하지만 devicemapper 및 공간 문제를 해결하지는 못했습니다.
— Paulo Oliveira

4
이 오류 메시지가 "무엇을"의미하는지 여전히 이해하지 못하므로 이러한 명령이 작동하더라도 그 이유를 완전히 이해하지 못할 것입니다. "씬 풀"이란 무엇입니까? 그리고 기존 프로세스는 "데이터 블록 해제"와 어떤 관련이 있습니까?
— yiati 2017
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.