2016-07-04 7 views
0

나는 codiva online ide의 개발자입니다. 사용자가 Java 프로그램을 실행할 때마다 새 컨테이너가 시작됩니다. 우리는 컨테이너 크기의 상한선을 설정할 수있는 유일한 방법이기 때문에 devicemapper 저장 드라이버를 사용합니다.Docker/var/lib/docker/devicemapper/devicemapper 2.7GB를 사용하여

몇 달 동안 사용하면 디스크 사용량이 증가하고/var/lib/docker/devicemapper/devicemapper가 약 2.7GB를 차지하는 것으로 나타났습니다.

실행되지 않는 모든 도킹 컨테이너를 삭제했으며, 불행히도/var/lib/docker/devicemapper/devicemapper의 디스크 사용량이 여전히 2.7GB로 표시됩니다.

이 공간을 되 찾는 가장 좋은 방법은 무엇입니까? 우리는 영구 저장 장치가 필요하지 않습니다. 우리는 모든 데이터를 삭제해도 괜찮습니다. 저장해야하는 데이터가 있기 때문에 호스트 디렉토리를 직접 마운트하고 해당 파일은 도커 외부에서 관리됩니다.

sudo docker ps -a 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS    NAMES 

실행 중이거나 중지 된 컨테이너가 없습니다. 도커 정보 결과가 여기에 있습니다.

$ sudo docker info 
Containers: 1 
Images: 14 
Server Version: 1.9.1 
Storage Driver: devicemapper 
Pool Name: docker-202:1-143417-pool 
Pool Blocksize: 65.54 kB 
Base Device Size: 107.4 GB 
Backing Filesystem: ext4 
Data file: /dev/loop0 
Metadata file: /dev/loop1 
Data Space Used: 2.591 GB 
Data Space Total: 107.4 GB 
Data Space Available: 1.469 GB 
Metadata Space Used: 2.531 MB 
Metadata Space Total: 2.147 GB 
Metadata Space Available: 1.469 GB 
Udev Sync Supported: true 
Deferred Removal Enabled: false 
Deferred Deletion Enabled: false 
Deferred Deleted Device Count: 0 
Data loop file: /var/lib/docker/devicemapper/devicemapper/data 
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata 
Library Version: 1.02.77 (2012-10-15) 
Execution Driver: native-0.2 
Logging Driver: json-file 
Kernel Version: 3.13.0-76-generic 
Operating System: Ubuntu 14.04.3 LTS 
CPUs: 1 
Total Memory: 992.5 MiB 
Name: ip-172-31-26-50 
ID: NIQ5:2NDW:SB77:ZNZU:UO6G:EYLB:JIW7:SQLL:QLWY:LNRM:SU6P:ZS7X 
WARNING: No swap limit support 

매달 리거나 고아가 된 볼륨이 없습니다. 8

sudo docker images 
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
java    8     289bdffc37d7  3 weeks ago   669.2 MB 

가 이미 https://lebkowski.name/docker-volumes/하고 여전히 불필요한 공간을 사용하는 지침을 따랐다 :

sudo docker volume ls 
DRIVER    VOLUME NAME 

유일한 이미지가 자바입니다.

편집 1 : 나는 docker images -a의 결과를 추가했습니다. 이것은 많은 수의 명명되지 않은 이미지를 보여줍니다. 이 모든 이미지의 합계가 4.5GB까지 올라 가기 때문에 크기는 의심 스럽지만 내 전체 /var/lib/docker은 약 2.7GB에 불과합니다.

$ sudo docker images -a 
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
java    8     289bdffc37d7  3 weeks ago   669.2 MB 
<none>    <none>    5d7cc49c4372  3 weeks ago   668.8 MB 
<none>    <none>    9e756f3b105a  3 weeks ago   310.9 MB 
<none>    <none>    7615ebf33bb7  3 weeks ago   310.9 MB 
<none>    <none>    ac079291ad51  3 weeks ago   310.9 MB 
<none>    <none>    cd02ed4609aa  3 weeks ago   310.9 MB 
<none>    <none>    07bbd1c2007f  3 weeks ago   310.9 MB 
<none>    <none>    6331ed9a346a  3 weeks ago   310.9 MB 
<none>    <none>    b647ad8e0a08  3 weeks ago   310.9 MB 
<none>    <none>    f23012d4423e  3 weeks ago   310.9 MB 
<none>    <none>    0d3e866c82f3  3 weeks ago   301 MB 
<none>    <none>    c28cbef85c39  3 weeks ago   169.7 MB 
<none>    <none>    3f0d3d140ce1  3 weeks ago   125.1 MB 
<none>    <none>    17bd2058e0c6  3 weeks ago   125.1 MB 

그 중 하나를 시도 할 때 오류가 발생합니다. $ sudo를 고정 표시기 RMI 5d7cc49c4372 데몬에서 오류 응답 : 충돌이 : 5d7cc49c4372을 삭제할 수 없습니다 (강제 할 수 없음) - 이미지가 부양 자녀 이미지를 오류가 있습니다 이미지를 제거하지 못했습니다 : 그것에 대해 읽고 [5d7cc49c4372]

입니다 단지 필요한 이미지 java : 8이이 하위 이미지에 의존하는 것 같습니다. 의미

$ sudo docker history 289bdffc37d7 
IMAGE    CREATED    CREATED BY          SIZE    COMMENT 
289bdffc37d7  3 weeks ago   /bin/sh -c /var/lib/dpkg/info/ca-certificates 418.2 kB    
5d7cc49c4372  3 weeks ago   /bin/sh -c set -x && apt-get update && apt- 357.9 MB    
7615ebf33bb7  3 weeks ago   /bin/sh -C#(nop) ENV CA_CERTIFICATES_JAVA_VE 0 B     
9e756f3b105a  3 weeks ago   /bin/sh -C#(nop) ENV JAVA_DEBIAN_VERSION=8u9 0 B     
ac079291ad51  3 weeks ago   /bin/sh -C#(nop) ENV JAVA_VERSION=8u91   0 B     
07bbd1c2007f  3 weeks ago   /bin/sh -C#(nop) ENV JAVA_HOME=/usr/lib/jvm/ 0 B     
cd02ed4609aa  3 weeks ago   /bin/sh -c { echo '#!/bin/sh'; echo 'set 87 B     
b647ad8e0a08  3 weeks ago   /bin/sh -C#(nop) ENV LANG=C.UTF-8    0 B     
6331ed9a346a  3 weeks ago   /bin/sh -c echo 'deb http://httpredir.debian. 61 B     
f23012d4423e  3 weeks ago   /bin/sh -c apt-get update && apt-get install 9.93 MB    
0d3e866c82f3  3 weeks ago   /bin/sh -c apt-get update && apt-get install 131.2 MB    
c28cbef85c39  3 weeks ago   /bin/sh -c apt-get update && apt-get install 44.67 MB    
3f0d3d140ce1  3 weeks ago   /bin/sh -C#(nop) CMD ["/bin/bash"]    0 B     
17bd2058e0c6  3 weeks ago   /bin/sh -C#(nop) ADD file:76679eeb94129df23c 125.1 MB 

는 태그가없는 이미지는 제거 할 수 없습니다, 나는 디자인으로 생각 여전히 ~ 고정 표시기 매장 따라 이미지만을 차이점 이후 6백70메가바이트해야 사용되는 전체 크기입니다.

devicemapper의 디스크 사용을 줄이는 방법을 알려주십시오.

+0

당신이 "고정 표시기의 이미지 -a"를 실행하면 어떤 인쇄 저를 보여줄 수 :이를 위해

,이 명령을 사용할 수 있습니까? 오래된 레이어가 남아 있는지 확인하기 만하면됩니다. – Fares

+0

docker 이미지 -a에 대한 결과를 추가했습니다. 사용하지 않은 이미지가 많이 보입니다. – JackDaniels

+0

https://github.com/chadoe/docker-cleanup-volumes를 보셨습니까? – timothyclifford

답변

0

특히 ext3을 사용하는 경우 다소 old bug with devicemapper 인 것으로 보입니다. ext3을 사용하고 있다면 upgrading to ext4로 문제를 해결할 수 있습니다. 버그의 주요 증상은 삭제 된 이미지와 볼륨을 devicemapper로 확보하지 않는다는 것입니다.

부족하면/var/lib/docker를 완전 제거하고 데이터 손실이 없다고 말하기 때문에 재설치 할 수 있습니다.

1

컨테이너와 관련된 볼륨을 제거해야합니다!

docker rm -v $(docker ps -a -q -f status=exited)