2017-02-17 1 views
1

Q. Arbeits Wie laufen Docker-komponieren in detach ModusDocker freistehend compose Modus nicht

Ich versuche Docker-komponieren in detach-Modus laufen, aber es wird beendet, nachdem es gerade laufen gelassen, aber ich kann das gleiche Bild im Detach-Modus mit dem Befehl 'docker run' ausführen.

  • Run Bild mit 'Andockfensters run' -Befehl (Arbeiten in detach Modus)

    docker run -itd ubuntu:16.04 
    

    unten ausgegeben von Befehl 'Andockfensters ps -a'

    CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS      PORTS    NAMES 
    d84edc987359  ubuntu:16.04  "/bin/bash"   4 seconds ago  Up 3 seconds         romantic_albattani 
    
  • Run dasselbe Bild mit dem Befehl 'docker-compose up -d' (funktionierte nicht im Detach-Modus)

    unten ist mein Docker-compose.yml Datei

    version: '3' 
    services: 
    ubuntu: 
        image: ubuntu:16.04 
    

    'Docker-compose ps' Befehlsausgabe

      Name    Command State Ports 
    ---------------------------------------------------- 
    composetesting_ubuntu_1 /bin/bash Exit 0 
    

Update: Bei der Verwendung von tty: true Parameter in docker- compose.yml Datei wie unten

version: '3' 
services: 
ubuntu: 
    image: ubuntu:16.04 
    tty: true 

dann Konsole wird keinen Befehl ausführen, wie wenn ich 'ls -l' eingeben Befehlskonsole reagiert nicht.

Antwort

4

Ich hatte gerade tty hinzuzufügen: true meiner Docker-compose.yml

version: '2' 
    services: 
     ubuntu: 
     image: ubuntu:16.04 
     tty: true 

Docker Version 1.12.5, bauen 7392c3b

Docker-compose Version 1.7.1, Build 0a9ab35

+0

ja, es funktioniert aber wie. Auch hier ist 'tty: true' kein Bestandteil der Dokumentation https://docs.docker.com/compose/compose-file/. Vielen Dank :) –

+1

@AnandSuthar Dieser Link geht an das Format der Version 3 zu verfassen - beachten Sie, dass dieses Beispiel Version 2 ist; Dieses Dokument enthält "tty". https://docs.docker.com/compose/compose-file/compose-file-v2/ –

+0

@AnandSuthar Und um Ihre Frage zu beantworten, 'tty: true' emuliert nur ein tty, das gleiche Ding' docker run -t' tut (wie in Ihrem Beispiel in der Frage verwendet). Wenn ein TTY vorhanden ist, bleibt die Shell im Einzelmodus aktiv. ohne eine tty, wird es nichts anderes zu tun und zu verlassen finden. –

0

Oben @ twotile42 ist die richtige Antwort auf meine Frage. Aber nur mit dem Parameter 'tty: true' kann der Benutzer keinen Befehl ausführen. Wenn Sie also eine Konsole ausführen oder mit ihr interagieren wollen, sollten Sie auch 'stdin_open: true' Parameter verwenden.

version: '2' 
services: 
    ubuntu: 
    image: ubuntu:16.04 
    tty: true 
    stdin_open: true