Użyj start do kontenera, jeśli wcześniej go zatrzymałeś . Używasz polecenia Uruchom do obrazu, jeśli wcześniej usunąłeś kontener tego obrazu. Myślę, że to podstawowe użycie.
CodeSlave,
Odpowiedzi:
349
To bardzo ważne pytanie, a odpowiedź jest bardzo prosta, ale fundamentalna:
Uruchom: utwórz nowy kontener obrazu i uruchom kontener. Możesz utworzyć N klonów tego samego obrazu. Komenda brzmi:
docker run IMAGE_IDi niedocker run CONTAINER_ID
Start: Uruchom kontener, który został wcześniej zatrzymany. Na przykład, jeśli zatrzymałeś bazę danych za pomocą polecenia docker stop CONTAINER_ID, możesz ponownie uruchomić ten sam pojemnik za pomocą polecenia docker start CONTAINER_ID, a dane i ustawienia będą takie same.
Czy konieczne jest utworzenie woluminu dla zatrzymanego kontenera, aby dane pozostały?
Logan Phillips
Różnica między Lifecycle @LoganPhillips plików zapisywanych domyślnym kontenera związkowej warstwie systemu plików i plików zapisanych do objętości jest: dane warstwa unia plików kontenera jest zawsze utracone po wyjęciu pojemnika ( docker rm container_id). Z drugiej strony dane woluminów przetrwają usunięcie kontenera, chyba że -vw wierszu poleceń podano wyraźnie opcję. Lokalizacja woluminu w systemie hosta może być bezpośrednio sprawdzona. Zobacz ten artykuł
Stphane
O procesie potrzebujesz & na końcu runwiersza poleceń? Potrzebuję go jako nabożeństwa (24 godziny)
Peter Krauss
Więc jaki jest cel „tworzenia okna dokowanego”? Jak / kiedy miałoby to zostać wykorzystane?
docker runPolecenie najpierw tworzy zapisywalną warstwę kontenera po określonym obrazie, a następnie rozpoczyna się go przy użyciu określonego polecenia.
Oznacza to, że doker prowadzony jest odpowiednikiem API /containers/createpotem /containers/(id)/start.
Po runzamontowaniu obrazu jako dysku wirtualnego tworzony jest dysk wirtualny z całą zawartością gry na dysku wirtualnym, a plik instalacyjny gry jest automatycznie uruchamiany. [Uruchamianie obrazu dokera - tworzenie kontenera, a następnie uruchamianie go.]
Ale kiedy go stop(podobnie jak przystanek dokera), dysk wirtualny nadal istnieje, ale zatrzymuje wszystkie procesy. [Ponieważ kontener istnieje, dopóki nie zostanie usunięty]
A kiedy to zrobisz start (podobnie do startu dokera), z dysku wirtualnego pliki gier zaczną się uruchamiać. [uruchamianie istniejącego kontenera]
W tym przykładzie - Obraz gry jest obrazem Dockera, a dysk wirtualny jest kontenerem.
To nie do końca prawda. Według oficjalnego dokumentu, "...docker run is equivalent to the API /containers/create then /containers/(id)/start.(źródło: docs.docker.com/engine/reference/commandline/run )
sshh
2
runpolecenie tworzy kontener z obrazu, a następnie uruchamia proces rootowania na tym kontenerze. Uruchomienie go z run --rmflagą można by oszczędzić kłopotu z wyjęciem bezużyteczną martwego pojemnik później i pozwoli Ci ignorować istnienie docker starti docker removecałkowicie.
run polecenie wykonuje kilka różnych czynności:
docker run --name dname image_name bash -c "whoami"
Tworzy pojemnik z obrazu. W tym momencie kontener będzie miał identyfikator, może mieć nazwę, jeśli zostanie podany, pojawi się wdocker ps
Uruchamia / wykonuje proces rootowania kontenera. W powyższym kodzie to by się wykonało bash -c "whoami". Jeśli ktoś biegniedocker run --name dname image_name bez polecenia wykonania kontenera, natychmiast przejdzie w stan zatrzymania.
Po zakończeniu procesu rootowania pojemnik jest zatrzymywany. W tym momencie jest to prawie bezużyteczne. Nie można już nic wykonać ani wskrzesić kontenera. Istnieją zasadniczo 2 wyjścia ze stanu zatrzymania: usuń kontener lub utwórz punkt kontrolny (tj. Obraz) z zatrzymanego kontenera, aby uruchomić coś innego. Należy uruchomić docker removeprzed uruchomieniem kontenera o tej samej nazwie.
Jak usunąć pojemnik, gdy zostanie automatycznie zatrzymany? Dodaj--rmflagę dorunpolecenia:
docker run --rm --name dname image_name bash -c "whoami"
Jak wykonać wiele poleceń w jednym kontenerze? Zapobiegając śmierci tego procesu root. Można to zrobić, uruchamiając jakieś bezużyteczne polecenie na początku z--detachedflagą, a następnie używając polecenia „wykonaj”, aby uruchomić rzeczywiste polecenia:
Dlaczego więc potrzebujemy docker stop? Aby zatrzymać ten trwały kontener, który uruchomiliśmy w poprzednim fragmencie za pomocą niekończącego się poleceniatail -f /dev/null.
execute
?Odpowiedzi:
To bardzo ważne pytanie, a odpowiedź jest bardzo prosta, ale fundamentalna:
docker run IMAGE_ID
i niedocker run CONTAINER_ID
docker stop CONTAINER_ID
, możesz ponownie uruchomić ten sam pojemnik za pomocą poleceniadocker start CONTAINER_ID
, a dane i ustawienia będą takie same.źródło
docker rm container_id
). Z drugiej strony dane woluminów przetrwają usunięcie kontenera, chyba że-v
w wierszu poleceń podano wyraźnie opcję. Lokalizacja woluminu w systemie hosta może być bezpośrednio sprawdzona. Zobacz ten artykuł&
na końcurun
wiersza poleceń? Potrzebuję go jako nabożeństwa (24 godziny)run
uruchamia obrazstart
uruchamia pojemnik .docker run
Doc wspomina:Nie uruchamiasz istniejącego kontenera, dokujesz do niego exec (od docker 1.3) .
Możesz zrestartować opuszczony kontener .
źródło
-i
dodocker run
interaktywnego procesu? Chodzi mi o to, że uruchomienie dokera wymaga obrazu do uruchomienia kontenera.Objaśnienie na przykładzie:
Załóżmy, że masz na komputerze obraz gry (ISO).
Po
run
zamontowaniu obrazu jako dysku wirtualnego tworzony jest dysk wirtualny z całą zawartością gry na dysku wirtualnym, a plik instalacyjny gry jest automatycznie uruchamiany. [Uruchamianie obrazu dokera - tworzenie kontenera, a następnie uruchamianie go.]Ale kiedy go
stop
(podobnie jak przystanek dokera), dysk wirtualny nadal istnieje, ale zatrzymuje wszystkie procesy. [Ponieważ kontener istnieje, dopóki nie zostanie usunięty]A kiedy to zrobisz
start
(podobnie do startu dokera), z dysku wirtualnego pliki gier zaczną się uruchamiać. [uruchamianie istniejącego kontenera]W tym przykładzie - Obraz gry jest obrazem Dockera, a dysk wirtualny jest kontenerem.
źródło
Odpowiedź daniele3004 jest już całkiem dobra.
Tylko szybkie i brudne formuła dla ludzi takich jak ja, którzy Mieszanki się
run
istart
od czasu do czasu:docker run [...]
=docker pull [...]
+docker start [...]
źródło
"...docker run is equivalent to the API /containers/create then /containers/(id)/start.
(źródło: docs.docker.com/engine/reference/commandline/run )run
polecenie tworzy kontener z obrazu, a następnie uruchamia proces rootowania na tym kontenerze. Uruchomienie go zrun --rm
flagą można by oszczędzić kłopotu z wyjęciem bezużyteczną martwego pojemnik później i pozwoli Ci ignorować istnieniedocker start
idocker remove
całkowicie.run
polecenie wykonuje kilka różnych czynności:docker ps
bash -c "whoami"
. Jeśli ktoś biegniedocker run --name dname image_name
bez polecenia wykonania kontenera, natychmiast przejdzie w stan zatrzymania.docker remove
przed uruchomieniem kontenera o tej samej nazwie.Jak usunąć pojemnik, gdy zostanie automatycznie zatrzymany? Dodaj
--rm
flagę dorun
polecenia:Jak wykonać wiele poleceń w jednym kontenerze? Zapobiegając śmierci tego procesu root. Można to zrobić, uruchamiając jakieś bezużyteczne polecenie na początku z
--detached
flagą, a następnie używając polecenia „wykonaj”, aby uruchomić rzeczywiste polecenia:Dlaczego więc potrzebujemy
docker stop
? Aby zatrzymać ten trwały kontener, który uruchomiliśmy w poprzednim fragmencie za pomocą niekończącego się poleceniatail -f /dev/null
.źródło