Linux
Docker-compose:沒有 sudo 無法建構,但沒有它我可以執行容器
在我的 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