W praktyce na początek pojemnik, robię:
docker run a8asd8f9asdf0
Jeśli tak jest, co:
docker start
zrobić?
W instrukcji jest napisane
Uruchom jeden lub więcej zatrzymanych pojemników
execute
?
W praktyce na początek pojemnik, robię:
docker run a8asd8f9asdf0
Jeśli tak jest, co:
docker start
zrobić?
W instrukcji jest napisane
Uruchom jeden lub więcej zatrzymanych pojemników
execute
?
Odpowiedzi:
To bardzo ważne pytanie, a odpowiedź jest bardzo prosta, ale fundamentalna:
docker run IMAGE_ID
i nie docker run CONTAINER_ID
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.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ńcu run
wiersza poleceń? Potrzebuję go jako nabożeństwa (24 godziny)
run
uruchamia obrazstart
uruchamia pojemnik .docker run
Doc wspomina:
docker run
Polecenie 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/create
potem/containers/(id)/start
.
Nie uruchamiasz istniejącego kontenera, dokujesz do niego exec (od docker 1.3) .
Możesz zrestartować opuszczony kontener .
-i
do docker 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.
Odpowiedź daniele3004 jest już całkiem dobra.
Tylko szybkie i brudne formuła dla ludzi takich jak ja, którzy Mieszanki się run
i start
od czasu do czasu:
docker run [...]
= docker pull [...]
+docker start [...]
"...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 z run --rm
flagą można by oszczędzić kłopotu z wyjęciem bezużyteczną martwego pojemnik później i pozwoli Ci ignorować istnienie docker start
i docker remove
całkowicie.
run
polecenie wykonuje kilka różnych czynności:
docker run --name dname image_name bash -c "whoami"
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:
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--detached
flagą, a następnie używając polecenia „wykonaj”, aby uruchomić rzeczywiste polecenia:
docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"
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
.