Ubuntu GNU/Linuxマシンで、プロジェクトからイメージをビルドしようとします
docker-compose build --no-cache --force-rm
そして、私は次のエラーを受け取ります:
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
If it's at a non-standard location, specify the URL with the DOCKER_Host environment variable.
しかし、私がSudoを試してみると、それらを構築できます。
Sudo docker-compose build --no-cache --force-rm
しかし、私はSudoの必要なしにそれらを起動できるので、それはやや不思議に思います。
docker-compose up
この問題の原因は、root:root
の所有者とグループにボリュームマウントポイントがあり、この動作が原因である。
この問題の解決策は、.dockerignore
という名前のファイルを作成し、すべてのフォルダーをボリュームとしてマウントすることです。
たとえば、次の場合docker-compose.yml
version: '2'
services:
data_map_prod:
build:
context: .
dockerfile: Dockerfile
image: 'pcmagas/data-map:latest'
links:
- 'neo4j'
- 'mongodb'
volumes:
- './docker-volumes/app_dev:/var/log/datamap'
ports:
- "9780:9780"
environment:
NEO4J_Host: 'neo4j'
MONGO_CONNECTION_STRING: 'mongodb://mongodb:map'
data_map_dev:
build:
context: .
dockerfile: Dockerfile_dev
image: 'pcmagas/data-map:dev'
links:
- 'neo4j_dev'
- 'mongodb'
volumes:
- './src:/opt/map/src'
- './www:/opt/map/www'
- './package.json:/opt/map/package.json'
- './docker-volumes/app_dev:/var/log/datamap'
ports:
- "9781:9780"
environment:
NEO4J_Host: 'neo4j_dev'
NEO4J_USER: 'neo4j'
NEO4J_PASSWORD: 'neo4j'
MONGO_CONNECTION_STRING: 'mongodb://mongodb:map_dev'
neo4j_dev:
image: 'neo4j'
ports:
- '7474:7474'
volumes:
- './docker-volumes/neo4j_dev/data:/data'
environment:
NEO4J_AUTH: 'neo4j/neo45j'
neo4j:
image: 'neo4j'
volumes:
- './docker-volumes/neo4j/data:/data'
environment:
NEO4J_AUTH: 'neo4j/neo45j'
mongodb:
image: 'mongo'
ports:
- '27017:27017'
volumes:
- './docker-volumes/mongodb/:/data/db'
次に、次の.dockerignore
を作成する必要があります。
./docker-volumes
ご覧のとおり、すべてのボリュームは./docker-volumes
フォルダにあります。
さらに、解決策は次の場所にあります https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#2911108
その理由の1つは、Dockerイメージのビルドに使用されるファイルが現在のユーザーによって所有されていないことです。これを変更するには、次のコマンドを使用します。
Sudo chown -R $USER .