GNU/Linux >> Znalost Linux >  >> Linux

Docker-compose:nelze sestavit BEZ sudo, ale mohu spouštět kontejnery bez něj

Příčinou problému je, že máte přípojný bod svazku s root:root vlastníka a skupiny a způsobila toto chování.

Řešením tohoto problému je vytvoření souboru s názvem .dockerignore a vložte všechny složky připojené jako svazky.

Například pokud máte následující 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'

Pak byste měli vytvořit následující .dockerignore :

./docker-volumes

Jak můžete vidět, všechny svazky jsou v ./docker-volumes složka.

Dále můžete najít řešení na:https://stackoverflow.com/questions/29101043/cant-connect-to-docker-from-docker-compose#29111083


Jedním z důvodů je, že žádný soubor použitý k vytvoření obrazu dockeru není ve vlastnictví aktuálního uživatele. Můžeme to změnit pomocí tohoto příkazu:

sudo chown -R $USER .

Linux
  1. Ssh – Potřebujete Tty ke spuštění sudo, pokud mohu sudo bez hesla?

  2. Mohu v Unixu spustit 'make' v adresáři, aniž bych do tohoto adresáře nejprve cd'oval?

  3. Přidat uživatele do skupiny, ale neprojeví se při spuštění id

  1. Spusťte kontejnery na Linuxu bez sudo v Podman

  2. Jak mohu nastavit a spustit PhantomJS na Ubuntu?

  3. Mohu spustit server Oracle bez swapu?

  1. Jak spustit konkrétní program jako root bez výzvy k zadání hesla?

  2. Jak mohu použít grep k porovnávání, ale bez vytištění shod?

  3. Ansible:sudo bez hesla