Docker/OSX가 "장치에 남은 공간이 없습니다"라는 이유를 찾을 수 없습니다.

Docker/OSX가 "장치에 남은 공간이 없습니다"라는 이유를 찾을 수 없습니다.

환경 버전:

macos 10.14.4
docker server 18.09.2
docker desktop Version 2.0.0.3 (31259)

컨테이너 내부에 오류가 발생하여 no space left on device오버플로가 어디서 발생하는지 확인할 수 없습니다.

최악의 점은 어머니 호스트 시스템의 관점(info/inpsect/system df 도구)에서 실제 컨테이너 크기를 결정할 수 없다는 것입니다. 실제로 docker와 어머니 호스트의 통계는 동일하지 않습니다./

내부에 다음 df 통계가 포함된 컨테이너가 있습니다.

   root@31a71014ad95:/usr/local/app# df -h
   Filesystem      Size  Used Avail Use% Mounted on
   overlay          63G   21G   40G  34% /
   tmpfs            64M     0   64M   0% /dev
   tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
   osxfs           234G  182G   48G  80% /shared_from_host
   /dev/sda1        63G   21G   40G  34% /etc/hosts
   shm              64M     0   64M   0% /dev/shm
   tmpfs           2.0G     0  2.0G   0% /proc/acpi
   tmpfs           2.0G     0  2.0G   0% /sys/firmware

( shared_from_host- 는 마더 호스트와의 통합을 위한 공유 볼륨입니다.)

Macos의 일반 이미지 파일 크기에 대해 읽었다고 언급해야 하는데, 괜찮은 것 같고 기본 64GB 크기와는 거리가 멀습니다.

ls -lah ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
-rw-r--r--@ 1 coin  staff    21G May 26 22:25 /Users/usss/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

Docker 컨테이너에는 확실히 큰 하위 디렉터리가 포함되어 있습니다.

root@31a71014ad95:/usr/local/app# du -hs ./*|grep CRISP
12G     ./CRISPRCasFinder

컨테이너 디스크 사용량 통계를 추정하는 권장 방법으로 , 를 보았지만 성공 하지 ps -s못했습니다 . 모두 실제 값이 아닙니다. 그래서 제가 그 도구를 잘못된 방식으로 사용하고 있는 것 같습니다. 저는 숫자를 낡은 방식으로 해석합니다.inspectsystem df

어머니 호스트 통계는 다음과 같습니다.

  1. docker inspect준다https://pastebin.com/53vLji1p

  2. docker ps -s준다

%docker container ps -sa
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                        PORTS                      NAMES               SIZE
31a71014ad95        nvm:nvm_tag   "/bin/bash"              6 hours ago         Exited (137) 23 minutes ago                              cr                  3.52GB (virtual 5.44GB)
<...>
  1. docker system df준다
%docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              8                   6                   5.52GB              3.021GB (54%)
Containers          6                   0                   3.541GB             3.541GB (100%)
Local Volumes       33                  6                   2.751GB             2.381GB (86%)
Build Cache         0                   0                   0B                  0B

이러한 값 중 어느 것도 du(위에 표시됨)를 사용한 컨테이너 사용과 유사하지 않습니다. 그 가치가 내가 찾아야 할 것입니까?

내가 찾은 가장 유용하고 자세한 예는 다음과 같습니다.https://www.projectatomic.io/blog/2016/03/daemon_option_basedevicesize/

그러나 현재 도커 버전 출력에는 작성자가 일러스트레이션에 사용하는 필드가 더 이상 포함되지 않는 것 같습니다. "기본 장치 크기", "DeviceSize"가 없습니다.

질문은 다음과 같습니다.

  1. 실제 컨테이너 사용 통계를 보고 조정을 적용하려면 어떻게 해야 합니까?

  2. 최대 컨테이너 디스크 크기 구성은 어디에 있나요?

감사합니다!

업데이트

Docker 앱을 다시 시작하려고 했는데 모두 치명적인 공간 오류로 끝났습니다.https://pastebin.com/twM3qN8N

따라서 docker는 현재 전혀 시작되지 않습니다. 알겠습니다... 저도 gh에서 매우 유사한 문제를 발견했습니다.https://github.com/docker/for-mac/issues/3529

이전에 qcow2 파일을 삭제하면 문제가 해결되는 오작동에 대한 문제를 보았지만 항상 가까운 위치 usedconfigured크기에 공간 문제가 있었고 크기 조정에 문제가 있었습니다. 하지만 이 문제는 내 문제와 비슷한 문제인 것 같습니다. 원인 문제 작성자 qcow2 파일 크기가 충분히 큰 것 같습니다.

임시 해결 방법은 모든 데이터를 지우는 것이지만, 완전히 지우기 전에 대안을 찾거나 최소한 디스크 사용량 측정 항목에 대한 설명을 찾기를 바랍니다.

업데이트 2

qcoo가 없는 부분 결정은 명확하지만 이해가 없음

기사를 읽은 후에도 모든 종류의 기사를 계속 읽었습니다.http://phutchins.com/blog/2017/01/04/fixing-docker-no-space-left-on-device/

그리고 2017년에는 기본값인 이상한 20GB 제한을 발견했습니다. 그리고 생각했습니다. df -h내부 컨테이너 및 docker desktopUI 설정이 64GB에 대해 보고함에도 불구하고 여전히 20GB 제한이 있다고 가정해 보겠습니다 . 가능해 보이죠?

그리고 기사에 쓰여진 대로 qemu를 설치하고 이미지에 +5Gb를 추가했습니다.

%qemu-img resize ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 +5G

그리고 짜잔 모든 것이 시작되고 작동했습니다. qemu 파일의 크기는 여전히 동일합니다.

%ls -lah ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
-rw-r--r--@ 1 usss  staff    21G May 27 00:46 /Users/usss/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

하지만 컨테이너 관점의 사용법이 조금 바뀌었습니다.

root@31a71014ad95:/usr/local/app# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          68G   21G   45G  32% /
tmpfs            64M     0   64M   0% /dev
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
osxfs           234G  178G   55G  77% /shared_from_host
/dev/sda1        68G   21G   45G  32% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs           2.0G     0  2.0G   0% /proc/acpi
tmpfs           2.0G     0  2.0G   0% /sys/firmware

이제 45Gb(40Gb 이상)를 사용할 수 있다고 명시되어 있습니다.

그러나 적어도 모든 것이 지금은 작동하지만 shadowed소비가 어디에 숨겨져 있는지 전혀 이해하지 못합니다.

답변1

데스크톱 버전의 Docker가 있는 디스크 공간은 내장형 Docker VM에 제공하는 디스크에 따라 제한될 수 있습니다. 이 VM 내부에는 이미지, 컨테이너, 명명된 볼륨 및 외부 소스(예: MacOS의 /Users 디렉터리)에서 VM에 명시적으로 마운트되지 않은 기타 파일이 있습니다. Docker 기본 설정에서 이 VM의 설정을 조정할 수 있습니다.

MacOS 디스크 환경 설정용 Docker

이미지 크레디트: 도커 문서

자세한 내용은 다음에서 확인할 수 있습니다.https://docs.docker.com/docker-for-mac/space/


디스크 사용량에 대한 한 가지 중요한 참고 사항은 디스크 바이트가 부족할 수 있으며 inode도 부족할 수 있다는 것입니다. 둘 다 동일한 오류가 발생합니다. 옵션 을 사용하여 df -iindoes를 확인하세요. 예:

df -h # to see disk free
df -hi # to see inodes free

컨테이너가 실행되는 동안 오류가 발생하고 컨테이너가 삭제된 경우 컨테이너를 삭제하면 해당 디스크 공간이 확보될 수 있습니다.

관련 정보