私の開発マシンは OSX です。私は boot2docker を使用して開発用のdockerを実行しています (これを docker -1と呼びます)。私のアプリはdockerコンテナも使用しています(したがって、docker内で実行されているdockerです-これをdocker-2と呼びます)。
通常、開発マシンでdocker-composeを使用してdocker-1を起動します。問題は、私が実行するときです
docker-compose run web /bin/bash
次に、docker-1 bash プロンプトで docker を起動してみます。
サービスドッカーの開始
サービスが開始されたように見え、pid ファイルが作成されますが、停止します。/var/log/docker.log
読む:
time="2015-05-21T12:40:23Z" level=warning msg="Udev sync is not supported. This will lead to unexpected behavior, data loss and errors"
time="2015-05-21T12:40:23Z" level=error msg="There are no more loopback devices available."
time="2015-05-21T12:40:23Z" level=info msg="+job serveapi(unix:///var/run/docker.sock)"
time="2015-05-21T12:40:23Z" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)"
time="2015-05-21T12:40:23Z" level=fatal msg="Shutting down daemon due to errors: error intializing graphdriver: loopback mounting failed"
そのため、最初はこれはドッカーの問題だと思いました。しかし、docker-1を手動で起動すると、 docker-composeをバイパスして次のように実行します。
docker run --privileged=true -ti ウェブサイト /bin/bash
次に、プロンプト内で docker を起動してみてください。すべてが期待どおりに機能します。
サービスドッカーの開始
成功 - docker が開始され、適切に実行されています!
これは、docker-composeに問題があるか、セットアップに問題がある可能性が高いと思わせます。しかし、私はマニュアルに目を通しましたが、私の目を引くものは何も見ませんでした.
docker-compose.yml
db:
image: postgres
ports:
- "5432"
redis:
image: redis
ports:
- "6379"
web:
privileged: true
build: .
volumes:
- .:/app
environment:
- A=b
ports:
- "3001:3000"
links:
- db
- redis