GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Docker-compose:kann nicht OHNE sudo bauen, aber ich kann Container ohne es ausführen

Die Ursache des Problems liegt darin, dass Sie einen Volume-Bereitstellungspunkt mit root:root haben Eigentümer &Gruppe und dieses Verhalten verursacht hat.

Die Lösung für dieses Problem besteht darin, eine Datei mit dem Namen .dockerignore zu erstellen und legen Sie alle Ordner als Volumes bereit.

Zum Beispiel, wenn Sie den folgenden docker-compose.yml haben

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'

Dann sollten Sie den folgenden .dockerignore erstellen :

./docker-volumes

Wie Sie sehen können, befinden sich alle Bände in ./docker-volumes Ordner.

Außerdem finden Sie Lösungen unter:https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#29111083


Einer der Gründe ist, dass keine Datei, die zum Erstellen des Docker-Images verwendet wird, dem aktuellen Benutzer gehört. Wir können dies mit diesem Befehl ändern:

sudo chown -R $USER .

Linux
  1. Wie führe ich ein bestimmtes Programm als Root ohne Passwortabfrage aus?

  2. Benutzer zur Gruppe hinzufügen, aber nicht wiedergegeben, wenn die ID ausgeführt wird

  3. Wie kann ich PhantomJS auf Ubuntu einrichten und ausführen?

  4. Wie kann ich grep zum Abgleichen verwenden, ohne die Übereinstimmungen zu drucken?

  5. Wie kann ich einen anderen Befehl ausführen, aber mit denselben Argumenten?

So führen Sie den Sudo-Befehl ohne Passwort aus

So führen Sie bestimmte Befehle ohne Sudo-Passwort in Linux aus

So führen Sie Sudo-Befehle ohne Passwort aus

So führen Sie sudo-Befehle ohne Passwort aus

Kann ich einen Oracle-Server ohne Swap betreiben?

Kann ein Programm erkennen, dass es unter sudo ausgeführt wird?