Rozważać:
docker run -it centos /bin/bash
Nacisnąłem Ctrl+, Daby wyjść.
Chcę kontynuować uruchamianie tego kontenera, ale okazało się, że nie mogę.
Jedyną metodą jest
docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash
Czy mam rację? Czy istnieje lepsza metoda? (Używam dokera 0.8.0.)
Odpowiedzi:
Możesz zrestartować istniejący kontener po jego wyjściu, a zmiany nadal tam są.
źródło
docker start `docker ps -q -l` && docker attach `docker ps -q -l`
docker start -i $(docker ps -q -l)
. ;-) Nazewnictwo może pomóc lepiej kontrolować, który kontener jest wybrany.-l
zdobądź ostatni, ok ...`docker ps -q -l`
bit jest rozszerzeniem. Zostanie zastąpiony identyfikatorem ostatniego utworzonego kontenera dokowania (-l). -q po prostu ukrywa inne informacje (identyfikatory łóżek) zwykle wysyłane przez`docker ps`
. ---- uwaga: Backtick nie jest znakiem cudzysłowu, ma bardzo szczególne znaczenie. Wszystko, co wpisujesz między backtickami, jest oceniane (wykonywane) przez powłokę przed głównym poleceniem - unix.stackexchange.com/questions/27428/…Created...
z którego nie można go uruchomić za pomocądocker start ...
. Można go jednak ponownie uruchomić za pomocądocker restart ...
-l
pobiera tylko „najnowsze” okno dokowane. Jeśli jesteś podobny do mnie idocker ps -a
pokazuje więcej niż jedną rzecz, którą musisz uruchomić, możesz ponownie uruchomić „wszystkie” (-a) z nich, zmieniając powyższe polecenie nadocker start `docker ps -q -a`
.-q
sprawia, że jest „cichy” (nie rejestruje danych wyjściowych)Wyjaśnienie:
docker start
uruchom kontener (wymaga nazwy lub identyfikatora)-a
dołącz do-i
interaktywnego trybudocker ps
kontenera Wyświetl-q
listę tylko kontenerów-l
Lista identyfikatorów tylko ostatnio utworzony kontenerźródło
Posługiwać się:
Spowoduje to uruchomienie wszystkich kontenerów, które są w stanie wyjścia.
To połączy się z określonym kontenerem.
źródło
docker exec -it <container id> /bin/bash
(lub po prostu bash).Jeśli chcesz to zrobić za pomocą wielu łatwych do zapamiętania poleceń:
docker ps -a
docker start -i <name/id>
-i
Flaga mówi doker dołączyć do standardowego wejścia kontenera.Jeśli kontener nie został uruchomiony z interaktywną powłoką do połączenia, musisz to zrobić, aby uruchomić powłokę:
Jest
/bin/sh
to skorupa zwykle dostępna z obrazami alpejskimi.źródło
Error response from daemon: Container <id> is not running
Jeśli chcesz kontynuować dokładnie jeden kontener Docker o znanej nazwie:
źródło
docker start <name>
gdzie <nazwa> to nazwa twojego kontenera. Przynajmniej z dokerem v19.03.8Wykonaj następujące kroki:
Uruchom poniżej polecenia, aby zobaczyć, że wszystkie usługi kontenerowe działają i są zatrzymane. Daje
-a
się również możliwość zatrzymania pojemnikaNastępnie uruchom kontener dokera albo za pomocą
container_id
nazwy znacznika kontenera, alboPowiedz z powyższego obrazka, identyfikator kontenera 4b161b302337
Tak więc polecenie do uruchomienia to
Można sprawdzić, czy kontener działa
źródło
Jeśli masz nazwany kontener, możesz go uruchomić, uruchamiając
gdzie nazwa_kontenera to nazwa kontenera, którą należy podać podczas tworzenia kontenera. Możesz zastąpić
container_name
go identyfikatorem kontenera, jeśli kontener nie ma nazwy. Identyfikator kontenera można znaleźć, uruchamiając:źródło
Te polecenia będą działać dla każdego kontenera (nie tylko tych ostatnich). Ten sposób zadziała nawet po ponownym uruchomieniu systemu. Aby to zrobić, te polecenia będą używać „id kontenera”.
Kroki:
Wyświetl listę wszystkich dokerów za pomocą tego polecenia i zanotuj identyfikator kontenera, który chcesz zrestartować:
docker ps -a
Uruchom kontener za pomocą identyfikatora kontenera:
docker start <container_id>
Dołącz i uruchom swój kontener:
docker attach <container_id>
UWAGA: Działa na systemie Linux
źródło
wg nazwy
lub przez Id
to ponownie uruchamia zatrzymany kontener, użyj -i, aby dołączyć STDIN kontenera lub zamiast -i możesz dołączyć do sesji kontenera (jeśli uruchamiasz z -it)
źródło
Spowoduje to uruchomienie wszystkich kontenerów, które są w stanie „Opuszczone”
źródło