GNU/Linux >> Tutoriels Linux >  >> Linux

Docker-compose :impossible de créer SANS sudo, mais je peux exécuter des conteneurs sans lui

La cause du problème est que vous avez un point de montage de volume avec root:root propriétaire et groupe et a provoqué ce comportement.

La solution à ce problème est de créer un fichier nommé .dockerignore et mettre tous les dossiers montés en volumes.

Par exemple, si vous avez le docker-compose.yml suivant

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'

Ensuite, vous devez créer le .dockerignore suivant :

./docker-volumes

Comme vous pouvez le voir tous les volumes sont en ./docker-volumes dossier.

De plus, vous pouvez trouver des solutions dans :https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#29111083


L'une des raisons est que tout fichier utilisé pour créer l'image Docker n'appartient pas à l'utilisateur actuel. Nous pouvons changer cela en utilisant cette commande :

sudo chown -R $USER .

Linux
  1. Ajouter un utilisateur au groupe mais pas reflété lors de l'exécution de l'ID

  2. Comment puis-je configurer et exécuter PhantomJS sur Ubuntu ?

  3. Ansible :sudo sans mot de passe

  4. Impossible d'exécuter Sonar Server car Elasticsearch ne peut pas s'exécuter en tant que root

  5. Comment puis-je exécuter une commande différente mais avec les mêmes arguments ?

Comment exécuter la commande Sudo sans mot de passe

Comment exécuter des commandes particulières sans mot de passe Sudo sous Linux

Comment exécuter des commandes Sudo sans mot de passe

Comment exécuter les commandes sudo sans mot de passe

Puis-je exécuter un serveur Oracle sans swap ?

Un programme peut-il dire qu'il est exécuté sous sudo ?