2016-07-11 9 views
2

Ich habe folgende docker-compose.yml:ERROR: für App kein solches Gerät

version: '2' 

services: 
    app: 
    build: ./app 
    container_name: myapp 
    volumes: 
     #- "../app:/root/www/myapp:rw" 
     - myapp:/root/www/myapp:rw 

volumes: 
    myapp: 
    #driver: local 
    driver_opts: 
     o: uid=500,gid=500 
     device: ../app 

Ich versuche, meine Host-Ordner in den Gast-Container mit einem benannten Volumen zu teilen. Ich habe die folgende Fehlermeldung erhalten?

ERROR: for app no such device 
ERROR: Encountered errors while bringing up the project. 

Was ist schiefgelaufen?

+0

Ich weiß nicht, warum dies geschieht, aber binde Halterungen leider nicht unterstützen uid & gid sowieso ... Sorry, ich bin mit dem Host-IDs stecken oder die aktuelle ID-Seltsamkeit (wenn Sie unter OS X sind). –

+0

Was passiert, wenn ich: 1.) Bind ein Host-Verzeichnis an einen persistenten Container mounten. 2.) In diesem Container wird dieser Ordner mit dem Befehl 'ln -s' zu einem anderen symbolisiert. 3.) Dieser symlinked Ordner wird einen benannten Datenträger haben, der zwischen diesem persistenten und "app" Container geteilt wird, und jetzt kann ich "uid" für diesen benannten Datenträger definieren? – Lanti

+0

Versuchte es, hat nicht funktioniert. – Lanti

Antwort

0

Warum brauchen Sie driver_opts hier. Es ist für die Netzwerkoption.

Ich denke, Sie sollten versuchen:

version: '2' 

services: 
    app: 
    build: ./app 
    container_name: myapp 
    volumes: 
     - "myapp:/root/www/myapp" 

volumes: 
    myapp: 
+0

Es gibt 'driver_opts' für Volume und Netzwerk in docker-compose: https://docs.docker.com/compose/compose-file/#/driver-opts und https://docs.docker.com/compose/ compose-file/#/driver-opts-1 Außerdem gibt es ein '$ docker volume create --opt' Flag (welches von docker-compose benutzt wird): https://docs.docker.com/engine/reference/commandline/volume_create/#/driver-specific-options Es wäre sehr schön, uid (und vielleicht gid) zu definieren, wie es im Dokument vorgeschlagen wird, aber im Moment wäre es ausreichend, wenn die Freigabe des Hostvolumens funktioniert. – Lanti

+0

Meine Docker-Version ist 1.11.2. Das Befehlszeilen-Dokument ist für 1.12. Vielleicht ist das der Fall? Edit: Nein, laut diesem Dokument sollte es in 1.11 auch unterstützt werden: https://docs.docker.com/v1.11/engine/reference/commandline/volume_create/ – Lanti

+0

Deine Lösung macht es möglich, ein Volume zu definieren der Gastgeber? Ich habe versucht, deins, gibt mir diese Fehlermeldung: 'FEHLER: In der Datei '/docker-compose.yml', Volume 'myapp' muss ein Mapping keine Zeichenfolge sein. ' – Lanti