0

私はcodiva online ideの開発者です。ユーザーが Java プログラムを実行するたびに、新しいコンテナーを開始します。コンテナー サイズの上限を設定できる唯一の方法であるため、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

実行中のコンテナや停止しているコンテナさえありません。docker info の結果はここにあります。

$ 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/の指示に従っていましたが、それでも不要な余分なスペースを使用しています。

Edit1: の結果を追加しましたdocker images -a。これは、多数の名前のない画像を示しています。これらすべての画像の合計が最大 4.5 GB になるため、サイズが怪しいように見えますが、全体/var/lib/dockerでは約 2.7 GB しかありません。

$ 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 docker 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 

つまり、タグ付けされていない画像を削除することはできません。Docker は依存する画像の差分のみを保存するため、設計上、使用される合計サイズは最大 670MB になるはずです。

devicemapper のディスク使用量を減らす方法を教えてください。

4

2 に答える 2

1

コンテナに関連付けられたボリュームを削除する必要があります!

これを実現するには、次のコマンドを使用します。

docker rm -v $(docker ps -a -q -f status=exited)
于 2017-01-11T13:51:05.403 に答える
0

これは、特に ext3 を使用している場合、 devicemapperのかなり古いバグのようです。ext3 を使用している場合は、ext4 にアップグレードすると問題が解決する場合があります。このバグの主な症状は、devicemapper が削除されたイメージとボリュームを解放しないことです。

それを除けば、/var/lib/docker を完全に消去して再インストールすることができます。これは、データが失われても大丈夫だと言っているからです。

于 2016-07-05T00:02:55.240 に答える