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)ます。

この時点で、Dockerマシンにsshしてを実行するとdf -h、次のようになります。

ドッカーマシンdf -h

次にを実行するdocker-compose up -dと、「デバイスに空き容量がありません」というエラーが表示されます、最後のコンテナのダウンロード中にれます。

"tmpfs"は実際にはその後少し一杯になっているようです:

ドッカーマシンdf -h

--virtualbox-disk-sizeオプションをチェックすると、デフォルトで20000 MBであることがわかります。これは、両方の画像で「/ dev / sda1」として表示されると思います。では、なぜ「tmpfs」nがコンテナでいっぱいになるのか、そして「tmpfs」とは正確には何なのでしょうか。一時ダウンロードディレクトリはありますか?コンテナ用により多くのスペースを作成するにはどうすればよいですか?

ありがとう!

詳細については、Docker Machine 0.4.0-rc2Docker Compose 1.3.2を使用しています。


4
tmpfsは何の関係もありません--virtualbox-disk-size。これはメモリにマウントされた(RAMディスクのような)ファイルシステムであり、ディスクにアクセスするものはありません。
0x7d7b 2015

その情報をありがとう@ 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
あまり直感的ではありませんが、これはうまくいきました。いったい、Docker?
BastiBen、2015年

1
確かに直感的ではありません!しかし、これはこれに問題があるようで、私のために修正しました。だから、+ 1。
レイペンダー

私も問題を解決しました、どうすればいいのか分かりませんが、ありがとうございます!
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の場合、画像名が見つかりますHello_blablabla)。これらの画像をすべて削除することも検討してください

上記のスクリプトを編集して削除するか、手動で削除できます

docker rmi {image-name}


3
Macでは、引数値の前後に単一引用符( ')を使用する必要がありましたdocker rmi $(docker images | grep '^<none>' | awk '{print $3}')docker rm $(docker ps -qa --no-trunc --filter "status=exited")ここで説明するように、停止したコンテナを削除することができます:stackoverflow.com/a/32723127/619659
Webdevotion

1
未使用の画像が多すぎて、シェルの文字数制限に達しました。それが私がやっdocker images | grep "^<none>" | xargs docker rmiた理由です。
Matthias Braun

1
不要な画像を削除することが役に立ちました。
akauppi 16

docker volume prune
justin.m.chase

..サイズ変更のための私のステップバイステップの説明を参照の/ var / libに/ドッキングウィンドウを使用してresize2fsのを別のスレッドで:stackoverflow.com/questions/32485723/...
アレックス・

65

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私を助けました
Maxim Yefremov '21

2
docker system pruneftw
マイケルギルド

1
docker volume pruneボリュームのみの場合、システムプルーンはダングリングボリュームをクリアしません。
justin.m.chase

上記でスペースが足りない場合は、次の核オプションをご利用くださいdocker rmi $(docker images -q)--force複数のコンテナーに含まれている一連のレイヤーをスキップする必要がある場合に追加します。
EmptyArsenal

14

A.未使用の画像を削除する

docker rmまたはdocker rmiコマンドを使用して、不要なイメージを削除できます。このタスクに役立つイメージが実際に存在します(martin / docker-cleanup-volumes)。基本は、イメージとコンテナーのリストからselectigを開始することです。

docker ps -a -s

B. DOCKER JSON記述子を変更する

それはいくつかのフォーラムで言及されています。アイデアは〜/ .docker / machine / machines / default / config.jsonにある記述子をインクリメントすることです。paramはDiskSizeのようですが、他のOS(Windowsではない)で動作するかどうかはわかりません。

C. Linuxのサイズ変更:

Windows OSでは、Dockerマシンまたはboot2dockerは実際にはvirtualbox vmであり、手順に従ってディスクのサイズを変更できます。ファイルをバックアップするように注意してください。一般的な手順は、virtualboxでサイズ変更を行ってから、gpartdと呼ばれるユーティリティを使用して、そのパーティション内のLinuxが認識するスペースを変更します。以下に示すこの手順を実行するためのリンクがいくつかあります。

D.ドッカーマシン/ BOOT2DOCKERを再作成する

アイデアは、デフォルトのdocker-machineを再作成することです。次のコマンドで説明できます。boot2dockerを再作成すると、以前にダウンロードしたDockerイメージが失われることに注意してください。

docker-machine rm default

docker-machine create --driver virtualbox --virtualbox-disk-size "100100" default

docker-machine env default

次に、仮想ボックスに移動して、「df -h」コマンドでboot2dockerスペースを表示できます。


ありがとう。私はWindowsで作業していました。ドッカーマシンを作り直して作りました。
KinoP 2016年

D:(Dockerマシンの再作成)を支援
StanislavL

ありがとう、Dockerマシンの再作成がうまくいきました(私はWindowsを使用しています)
Lucha Laura Hardie

愛がいっぱい!
eduyayo

2

docker osx /ボタン[ ディスクイメージの移動 ]を押すことができ、Docker.qcow2(おそらくコンテナー/イメージを含む)を正常に移動しました

ここに画像の説明を入力してください 最初-マシンが起動したとき-私はまだデバイスに空き容量がありませんという エラー発生してましたが、すぐに解決しました。


0

私はこの問題に遭遇し、mac用のdocker UIで追加のスペースを追加できませんでした。homebrewでdockerをインストールし、マシンの作成時に次のコマンドを実行しました。

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

これにより、以前に使用していた仮想ボックスにメモリとディスクのサイズの2倍のスペースが追加され、必要に応じて必要な設定サイズをここに追加できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.