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-compose up -d
を実行すると、最後のコンテナをダウンロードしている間に "デバイスに空きスペースがありません"というエラーが出る が出ます。
"tmpfs"は、その後本当に少し満ちているようです。
- virtualbox-disk-sizeオプションをチェックすると、デフォルトは20000 MBであることがわかります。 「両方の写真に。それでは、なぜコンテナーが "tmpfs" nをいっぱいにしていて、正確には "tmpfs"とは何ですか?一時ダウンロードディレクトリはありますか。 どうすればコンテナーのスペースを増やすことができますか?
ありがとうございます。
詳しくは、Docker Machine 0.4.0-rc2およびDocker Compose 1.3.2を使用しています。
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% /
私は同じエラー([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}
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")
未使用の画像を削除する
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スペースを見ることができます。
私はこの問題に遭遇し、Mac用のdocker UIで追加スペースを追加することができませんでした、私はdockerをhomebrewでインストールし、私のマシンを作成するときに次のコマンドを実行しました:
docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default
これは私が以前持っていたvirtualboxにメモリとディスクサイズのためのスペースを2倍追加します、そしてあなたがあなたが適当と思うようにあなたが必要とする設定サイズをここに追加することができます