Docker Machine : 기기에 남은 공간이 없습니다.


126

Docker Compose로 Docker Machine을 설정하려고합니다.

시나리오 1 (Docker Machine 없음) Docker Machine없이
실행하면 docker-compose up -d의도 한대로 3 개의 연결된 컨테이너가 생성됩니다 (nginx + mongodb + nodejs).

시나리오 2 (Docker Machine 사용)
그런 다음 Docker Machine을 사용하여 VM을 만들고 Docker에게 eval $(docker-machine env streambacker-dev).

이 시점에서 도커 머신으로 ssh하고 실행 df -h하면 다음 과 같은 결과 가 나타납니다.

도커 머신 df -h

그때 실행하면 docker-compose up -d, 내가 얻을 "공백 장치에 남아있는"오류를 마지막 용기를 다운로드하는 동안.

"tmpfs"는 그 후에 실제로 약간 꽉 찬 것 같습니다.

도커 머신 df -h

--virtualbox-disk-size 옵션을 확인하면 기본값 이 20000MB로 표시됩니다. 두 사진 모두에서 "/ dev / sda1"로 볼 수있는 것으로 생각됩니다. 그렇다면 컨테이너가 "tmpfs"n을 채우는 이유는 무엇이며 정확히 "tmpfs"는 무엇입니까? 임시 다운로드 디렉토리입니까? 컨테이너를위한 더 많은 공간을 어떻게 만들 수 있습니까?

감사!

자세한 내용은 Docker Machine 0.4.0-rc2Docker Compose 1.3.2를 사용하고 있습니다.


4
tmpfs함께 할 수 없다 --virtualbox-disk-size. 메모리에 마운트 된 파일 시스템 (예 : RAM 디스크)이며 디스크에 액세스하는 것이 없습니다.
0x7d7b

그 정보에 대해 @ h3nrik에게 감사드립니다.
Marc Perrin-Pelletier

2
매달려있는 이미지, 매달려있는 볼륨과 같은 도커의 매달려있는 물건을 확인하고 삭제하십시오. docker rmi $(docker images -f dangling=true -q)그리고docker volume rm $(docker volume ls -f dangling=true -q)
Jinna Balu

답변:


87

위에서 말했듯 tmpfs이는 --virtualbox-disk-size. boot2docker tmpfs가 메모리에 마운트 되는 것처럼 보이므로 virtualbox vm에 더 많은 메모리를 할당 해야합니다. --virtualbox-memory매개 변수 를 지정하여 수행 할 수 있습니다 .

   --virtualbox-memory "1024"
Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE]

기본값 :

$ docker-machine create --driver virtualbox testA
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testA
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testA:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.6M    112.7M    783.9M  13% /

--virtualbox-memory설정8096

$ docker-machine create --driver virtualbox --virtualbox-memory 8096 testB
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testB
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testB:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                     6.9G    112.4M      6.8G   2% /

14
그다지 직관적 인 것은 아니지만 이것은 효과가있었습니다. 도커, 도커?
BastiBen 2015 년

1
실제로 직관적이지 않습니다! 그러나 이것이 문제인 것 같고 나를 위해 고쳤습니다. 그래서 +1.
Ray Pendergraph 2015

나도 문제를 고쳤습니다. 어떻게하는지 모르겠지만 감사합니다!
Bendihossan 2015

매번 수동으로 지정할 필요가 없도록 기본 크기를 늘리는 방법이 있습니까?
CGFoX

124

동일한 오류 ( [ERROR] InnoDB: Error number 28 means 'No space left on device') 가 발생 하여 다음과 같이 해결합니다.

1 . Docker에서 고아 볼륨을 삭제하면 내장 된 docker volume 명령을 사용할 수 있습니다. 내장 명령은 또한 볼륨이 아닌 / var / lib / docker / volumes의 디렉토리를 삭제하므로 저장하려는 항목을 넣지 않았는지 확인하십시오.

경고 유지하려는 데이터가있는 경우 매우주의하십시오.

대청소:

$ docker volume rm $(docker volume ls -qf dangling=true)

추가 명령 :

매달린 볼륨 나열 :

$ docker volume ls -qf dangling=true

모든 볼륨 나열 :

$ docker volume ls

2. 또한 사용하지 않는 모든 이미지를 제거하는 것을 고려하십시오.

먼저 <none>이미지를 제거합니다 ( 이미지를 빌드하는 동안 가끔 생성되며 어떤 이유로 이미지 빌드가 중단 된 경우 해당 이미지는 그대로 유지됩니다).

제거하는 데 사용하는 멋진 스크립트가 있습니다.

docker rmi $(docker images | grep "^<none>" | awk '{print $3}')

그런 다음 Docker Compose를 사용하여 모든 프로젝트에 대해 로컬로 이미지를 빌드하는 경우. 일반적으로 폴더와 같은 이름의 많은 이미지가 생성됩니다 (예를 들어 프로젝트 폴더 이름이 Hello이면 images name을 찾을 수 있습니다 Hello_blablabla). 따라서 이러한 모든 이미지를 제거하는 것도 고려하십시오.

위의 스크립트를 편집하여 제거하거나 수동으로 제거 할 수 있습니다.

docker rmi {image-name}


3
Mac에서는 인수 값 주위에 작은 따옴표 ( ')를 사용해야했습니다 : docker rmi $(docker images | grep '^<none>' | awk '{print $3}'). 중지 된 컨테이너 제거는 stackoverflow.com/a/32723127/619659에docker rm $(docker ps -qa --no-trunc --filter "status=exited") 설명 된대로 수행 할 수 있습니다 .
Webdevotion

1
사용하지 않은 이미지가 너무 많아서 껍질의 글자 수 제한에 도달했습니다. 그것이 내가 한 이유 docker images | grep "^<none>" | xargs docker rmi입니다.
Matthias Braun

1
불필요한 이미지를 제거하는 것이 도움이되었습니다.
akauppi

docker volume prune
justin.m.chase 2019 년

.. 다른 스레드에서 resize2fs 를 사용하여 / var / lib / docker 크기 조정에 대한 단계별 설명을 참조하십시오 . stackoverflow.com/questions/32485723/…
Alex

66

Docker Community Edition을 사용하는 경우 :

 docker system prune
 docker volume prune  # as suggested by @justin-m-chase since system prune does not clean volumes.

boot2docker (docker-machine)를 사용하는 경우 분리 된 볼륨을 지 웁니다.

 docker volume rm $(docker volume ls -qf dangling=true)

사용하지 않는 이미지 지우기 :

 docker rmi $(docker images -q -f "dangling=true")

6
docker system prune나에게 도움이
맥심 Yefremov을

2
docker system pruneftw
Michael Guild

1
docker volume prune볼륨에 대해서만 시스템 정리는 매달린 볼륨을 지우지 않습니다.
justin.m.chase 2019 년

위의 방법으로 충분한 공간이 확보되지 않으면 다음과 같은 핵 옵션이 docker rmi $(docker images -q)있습니다.. --force여러 컨테이너에 포함 된 여러 레이어를 건너 뛰어야하는 경우 추가 합니다.
EmptyArsenal

14

A. 사용하지 않는 이미지 제거

docker rm 또는 docker rmi 명령을 사용하여 필요하지 않은 이미지를 제거 할 수 있습니다. 실제로이 작업에 도움이되는 이미지가 존재합니다 (martin / docker-cleanup-volumes). 기본은 이미지 및 컨테이너 목록에서 selectig를 시작하는 것입니다.

도커 ps -a -s

B. DOCKER JSON 설명자 수정

일부 포럼에서 언급되었습니다. 아이디어는 ~ / .docker / machine / machines / default / config.json에있는 설명자를 증가시키는 것입니다. 매개 변수는 DiskSize 인 것 같지만 다른 OS (Windows가 아닌)에서 작동하는지 모르겠습니다.

C. LINUX 크기 조정 :

Windows OS에서 docker machine 또는 boot2docker는 실제로 virtualbox vm이므로 절차에 따라 디스크 크기를 조정할 수 있습니다. 파일 백업에주의하십시오. 일반적인 절차는 virtualbox에서 크기를 조정 한 다음 gpartd라는 유틸리티를 사용하여 파티션에서 Linux가 인식하는 공간을 수정하는 것입니다. 이 절차를 수행 할 수있는 링크가 아래에 나와 있습니다.

D. DOCKER-MACHINE / BOOT2DOCKER 재생성

아이디어는 기본 도커 머신을 다시 만드는 것입니다. 다음 명령을 통해 설명 할 수 있습니다. boot2docker를 다시 생성하면 이전에 다운로드 한 도커 이미지가 손실됩니다.

docker-machine rm 기본값

docker-machine create --driver virtualbox --virtualbox-disk-size "100100"기본값

docker-machine env 기본값

그런 다음 가상 상자로 이동하여 "df -h"명령으로 boot2docker 공간을 볼 수 있습니다.


감사. 저는 Windows에서 작업하고있었습니다. 도커 머신을 다시 만들어 만들었습니다.
KinoP

도움을 준 D : (다시 고정 표시기 기계)
StanislavL

감사합니다. 도커 머신을 다시 만드는 것이 저를 위해 일했습니다 (나는 창문에 있습니다)
Lucha Laura Hardie

너무 많은 사랑을 느낍니다!
eduyayo

2

docker osx에서 / [ Move Disk Image ] 버튼을 누를 수 있었고 Docker.qcow2 (아마도 컨테이너 / 이미지 포함)를 성공적으로 이동했습니다.

여기에 이미지 설명 입력 처음에-기계가 시작되었을 때- 장치에 남은 공간 없음 오류 가 계속 발생 했지만 곧 해결되었습니다.


0

이 문제가 발생하여 Mac 용 Docker UI로 추가 공간을 추가 할 수 없었고, homebrew와 함께 docker를 설치하고 컴퓨터를 만들 때 다음 명령을 실행했습니다.

docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default

이렇게하면 이전에 가졌던 가상 상자에 메모리 및 디스크 크기를위한 공간이 두 배로 추가되고 필요에 따라 필요한 설정 크기를 여기에 추가 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.