web-dev-qa-db-ja.com

Docker Machine:端末に空き容量がありません

Docker ComposeでDocker Machineをセットアップしようとしています。

シナリオ1(Docker Machineなし)
Docker Machineなしでdocker-compose up -dを実行すると、意図したとおりに3つのリンクされたコンテナーが作成されます(nginx + mongodb + nodejs)。

シナリオ2(Dockerマシンあり)
次に、Docker Machineを使用してVMを作成し、eval $(docker-machine env streambacker-dev)を使用してそのコンピューターと対話するようにDockerに指示します。

この時点で、自分のdockerマシンにSSHでアクセスしてdf -hを実行すると、次のようになります。

docker machine df -h

それからdocker-compose up -dを実行すると、最後のコンテナをダウンロードしている間に "デバイスに空きスペースがありません"というエラーが出る が出ます。

"tmpfs"は、その後本当に少し満ちているようです。

docker machine df -h

- virtualbox-disk-sizeオプションをチェックすると、デフォルトは20000 MBであることがわかります。 「両方の写真に。それでは、なぜコンテナーが "tmpfs" nをいっぱいにしていて、正確には "tmpfs"とは何ですか?一時ダウンロードディレクトリはありますか。 どうすればコンテナーのスペースを増やすことができますか?

ありがとうございます。

詳しくは、Docker Machine 0.4.0-rc2およびDocker Compose 1.3.2を使用しています。

113

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-memory8096に設定

$ 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% /
82
wtekiela

私は同じエラー([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>イメージを取り除きます(これらはイメージの構築中に生成されることがあり、何らかの理由でイメージの構築が中断された場合はそこに残ります)。

これは私がそれらを削除するために使用するNiceスクリプトです。

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

その後、Docker Composeを使用して各プロジェクトのローカルでイメージを構築します。通常は自分のフォルダのように名前が付けられた多数の画像が表示されます(たとえば、プロジェクトフォルダがHelloの場合、画像名はHello_blablablaになります)。そのため、これらすべての画像を削除することも検討してください。

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

docker rmi {image-name}

104
Mahmoud Zalt

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")
50
Alex Efimov

未使用の画像を削除する

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

docker ps -a -s

B.ドッカーのJSON記述子を修正する

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

C. Linuxサイズ:

windows OSでは、docker machineまたは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"デフォルト

docker-machine env default

それから、仮想ボックスに行き、コマンド "df -h"でboot2dockerスペースを見ることができます。

13
andhdo

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

enter image description here 最初 - マシンが起動したとき - 私はまだデバイスエラーにスペースが残っていませんでしたが、その後すぐに解決しました。

2
johndpope

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

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

これは私が以前持っていたvirtualboxにメモリとディスクサイズのためのスペースを2倍追加します、そしてあなたがあなたが適当と思うようにあなたが必要とする設定サイズをここに追加することができます

0
aabiro