2017-01-29 13 views
6

Użyłem docker run -it do interaktywnego uruchamiania kontenerów i docker run -d, aby uruchomić je w tle. Te dwie opcje wydawały się wyjątkowe. Jednak teraz zauważyłem, że docker run -dit jest dość powszechne. Jaka jest różnica? Kiedy -it jest naprawdę potrzebny wraz z -d?Jaka jest różnica między uruchamianiem docker -dit a docker run -d?

+2

'-i' uruchamia interaktywną sesję i' -t' emuluje tty. Ale '-d' mówi Dockerowi, aby odłączył się i uciekł w tle. Nie mają żadnego sensu razem ... –

+0

@DanLowe Dlatego zapytałem. Jest używany w [witrynie dokera] (https://docs.docker.com/engine/reference/commandline/container_update/) i gdzie indziej. – vehsakul

+0

Tak, masz rację. Pomyślałem, że może to zmieni zachowanie 'docker attach' ... ale nie widzę żadnej różnicy. Dobre pytanie. –

Odpowiedz

7

Tak, czasami konieczne jest m.in. -it nawet ty -d

  1. Gdy ENTRYPOINT jest bash lub sh

    docker run -d ubuntu:14.04 natychmiast zatrzymać, bo bash nie można znaleźć żadnych pseudo terminal być asygnowany. Musisz podać -it, aby bash lub sh można przypisać do pseudo terminalu.

    docker run -itd ubuntu:14.04 
    
  2. Jeśli chcesz użyć nano z dowolnego pojemnika w przyszłości, trzeba określić -it po uruchomieniu obrazu. W przeciwnym razie dostaniesz błąd. Na przykład,

    docker run --name mongodb -d mongo 
    docker exec -it mongodb bash 
    apt-get update 
    apt-get install nano 
    nano somefile 
    

    Będzie poprzez błędu

    Error opening terminal: unknown.

Powiązane problemy