143

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」をいっぱいにするのはなぜですか?「tmpfs」とは正確には何ですか? 一時的なダウンロード ディレクトリですか? コンテナー用のスペースを増やすにはどうすればよいですか?

ありがとう!

参考までに、Docker Machine 0.4.0-rc2Docker Compose 1.3.2を使用しています。

4

8 に答える 8

149

同じエラー ( [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 の場合、 images name が見つかりますHello_blablabla)。これらの画像をすべて削除することも検討してください

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

docker rmi {image-name}

于 2016-05-19T16:49:29.437 に答える
89

上記のように、 は とtmpfsは何の関係もありません--virtualbox-disk-size。boot2dockertmpfsがメモリにマウントされているように見えるため、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% /
于 2015-09-11T08:13:21.670 に答える
15

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

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

ドッカー ps -a -s

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

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

C. Linux のサイズ変更:

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

D. DOCKER-MACHINE / BOOT2DOCKER の再作成

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

docker-machine rm デフォルト

docker-machine create --driver virtualbox --virtualbox-disk-size "100100" デフォルト

docker-machine 環境のデフォルト

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

于 2016-06-10T20:09:55.427 に答える
0

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

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

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

于 2018-10-01T08:19:30.580 に答える