Linux

Docker-compose:沒有 sudo 無法建構,但沒有它我可以執行容器

  • June 5, 2019

在我的 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#29111083

引用自:https://unix.stackexchange.com/questions/413015