Co to jest tryb odłączony w świecie Dockera? Czytałem ten artykuł Link , ale nie wyjaśnia on dokładnie, co oznacza tryb odłączony.
Możesz uruchomić kontener Dockera w trybie odłączonym za pomocą pliku -d
opcji. Więc kontener uruchamia się i działa w tle. Oznacza to, że uruchamiasz kontener i możesz użyć konsoli po uruchomieniu do innych poleceń.
Przeciwieństwem trybu odłączonego jest tryb pierwszoplanowy. To jest tryb domyślny, gdy -d
opcja nie jest używana. W tym trybie konsola, której używasz do wykonania, docker run
zostanie podłączona do standardowego wejścia, wyjścia i błędu. Oznacza to, że konsola jest podłączona do procesu kontenera.
W trybie odłączonym możesz śledzić standardowe dane wyjściowe kontenera docker za pomocą docker logs -f <container_ID>
.
Po prostu wypróbuj obie opcje. Zawsze używam trybu odłączonego do uruchamiania kontenerów. Mam nadzieję, że mógłbym to wyjaśnić trochę jaśniej.
docker logs -f [container_ID] > logs.txt
. Jeśli to nie zadziała, spróbuj dodać flagę `` -it '' podczas uruchamiania kontenera Dockera, zgodnie z sugestią @BMitch poniżej.Opcja odłączania w wierszu poleceń docker wskazuje, że klient docker (
docker
) wyśle żądanie do serwera (dockerd
), a następnie zakończy działanie, podczas gdy to żądanie będzie kontynuowane na serwerze. Częścią zamieszania może być to, że docker wygląda jak pojedynczy proces, podczas gdy w rzeczywistości jest to aplikacja klient / serwer, gdzie klient jest tylko cienkim frontendem w REST API, który wysyła każde polecenie do serwera.Z a
docker container run --detach
oznacza to, że kontener zostanie utworzony, serwer odpowie identyfikatorem kontenera, jeśli się powiedzie, a kontener będzie nadal działał na serwerze, podczas gdy możesz wykonywać inne polecenia. Jest to często używane w przypadku serwera (np. Nginx), na którym chcesz uruchomić w tle, podczas gdy kontynuujesz wykonywanie innych poleceń. Pamiętaj, że nadal możesz skonfigurować kontener z opcjami--interactive
i-tty
(często w skrócie-it
), a później uruchomić a,docker container attach
aby połączyć się z już działającym kontenerem. (Uwaga, dopóki nie podłączysz się do kontenera działającego z-itd
, każda próba odczytu ze standardowego wejścia przez kontener zawiesza się, zamiast zobaczyć koniec danych wejściowych, który często powoduje natychmiastowe wyjście, jeśli właśnie zdałeś-d
.)W przypadku uruchomienia bez opcji odłączania klient natychmiast uruchomi wywołanie funkcji attach API po utworzeniu kontenera, aby można było zobaczyć dane wyjściowe i opcjonalnie podać dane wejściowe do uruchomionego procesu w kontenerze. Jest to przydatne, jeśli w Twoim kontenerze działa coś interaktywnego (np
/bin/bash
.).Kilka innych poleceń umożliwia opcję odłączania, w tym
docker-compose up -d
uruchomienie całego projektu i pozostawienie go uruchomionego na serwerze w tle. Istnieje również wieledocker service
poleceń, które zostaną odłączone po przesłaniu zmiany na serwer w celu utworzenia lub zaktualizowania stanu docelowego usługi, lub jeśli nie odłączysz, klient będzie czekał, aż bieżący stan usługi będzie zgodny ze stanem docelowym i możesz zobaczyć postęp wdrażania. Zauważdocker service
, że w przypadku poleceń może być konieczne przekazanie,--detach=false
aby pozostać podłączonym, zachowanie zmieniło się w ciągu ostatniego roku w zależności od wersji.źródło
--detach-keys
)--interactive
i--tty
(aka-it
), aby to zadziałało.docker run - utwórz wystąpienie z obrazu docker jako kontener docker. (jeśli obraz nie jest dostępny lokalnie, jest pobierany z centrum docker) ubuntu - nazwa obrazu
14.04 - Tag
-d, --detach - Tryb odłączania
-t, --tty - przydziela pseudo-TTY
źródło