2016-07-04 20 views
0

我是codiva online ide的開發人員。每次用戶運行一個Java程序時,我們都會啓動一個新的容器。我們使用devicemapper存儲驅動程序,因爲這是我們能夠設置容器大小上限的唯一方法。使用2.7GB的Docker/var/lib/docker/devicemapper/devicemapper

經過幾個月的使用後,我們看到磁盤使用量在增加,而/ var/lib/docker/devicemapper/devicemapper大約需要2.7GB。

我刪除了所有未運行的docker容器,以及任何懸掛的卷,不幸的是,/ var/lib/docker/devicemapper/devicemapper的磁盤使用量仍顯示爲2.7GB。

回收這個空間的最佳方法是什麼?我們不需要任何持久性存儲,我們可以刪除所有數據,因爲需要存儲的任何數據,我們直接掛載主機目錄,並且這些文件在docker之外管理。

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 

有沒有懸掛或孤兒卷。

sudo docker volume ls 
DRIVER    VOLUME NAME 

唯一的圖像是用java: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/,仍然是使用不必要的額外空間。

編輯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 

這意味着,在未經標記的圖像不能被刪除,並且我認爲設計中仍然應該〜因爲碼頭工人只存儲的diff的相關圖片670MB的總規模。

請讓我知道如何減少devicemapper的磁盤使用情況。

+0

你能不能告訴我,當你運行什麼版畫「泊塢窗圖像-a」?只是爲了看看是否還有舊的圖層。 – Fares

+0

添加了碼頭圖像的結果-a,並且我看到大量看似未使用的圖像 – JackDaniels

+0

你見過https://github.com/chadoe/docker-cleanup-volumes嗎? – timothyclifford

回答

0

這似乎是一個old bug with devicemapper,特別是如果您使用的是ext3。如果您使用的是ext3,那麼upgrading to ext4可能會解決您的問題。該錯誤的主要症狀是devicemapper不釋放已刪除的映像和卷。

簡而言之,您可以完全清除/ var/lib/docker並重新安裝,因爲您認爲數據丟失正常。

1

您必須刪除與容器關聯的卷!

要做到這一點,使用這個命令:

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