2015-09-21 12 views
7

uruchomiony pojemnik Docker pomocą bardzo (8 linii) długą listę argumentyCzy ponowne uruchomienie kontenera Dockera "zapamiętaj" argumenty początkowego uruchomienia?

docker run -d -p 5000:5000 --restart=always --name registry \ 
    -v `pwd`/auth:/auth \ 
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ 
    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ 
    -v `pwd`/certs:/certs \ 
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \ 
    -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \ 
    registry:2 

Potwierdzałem ten został uruchomiony przez docker ps:

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
ff9c654bfc39  registry:2   "/bin/registry /etc/d" 2 days ago   Up 13 minutes  0.0.0.0:5000->5000/tcp registry 

Następnie zatrzymany opakowanie poprzez docker stop ff9c654bfc39 . Następnie próbowałem ponownie uruchomiony pojemnik wydając dokładnie taką samą docker run ... (8 liner) jak ja po raz pierwszy:

Error response from daemon: Conflict. The name "registry" is already in use by container ff9c654bfc39. You have to delete (or rename) that container to be able to reuse that name. 

Więc ja tylko starałem docker restart ff9c654bfc39 i wydawało się, że działa, ale nie jestem w 100 % pewnie Docker "zapamiętał" moje 8 linii argumentów od momentu, w którym początkowo uruchomiłem kontener. Jakieś pomysły, czy to pamięta? Jeśli nie, to jaka jest właściwa komenda restartu, aby uwzględnić te 8 linii?

+0

Możesz próbowano ponownie uruchamiając go z prostego polecenia „start doker”? Zgodnie z referencją (https://docs.docker.com/reference/commandline/run/): "Zatrzymany kontener może zostać ponownie uruchomiony z wszystkimi wcześniejszymi zmianami nienaruszonymi za pomocą startu dokera. Patrz docker ps -a, aby wyświetlić listę wszystkie pojemniki. " – gabowsky

Odpowiedz

5

Jak @gabowsky wyjaśnia w komentarzach, tak, Docker zapamięta.

Używanie , stop i restart NIE zniszczy pojemnika, a więc zapamięta wszystko, łącznie z danymi (nawet pomiędzy ponownym uruchomieniem hosta). Co to jest stop zatrzymanie procesu działającego w kontenerze. To wszystko.

Ponadto Docker przechowuje cały kontekst, zmienne itp. W wewnętrznym formacie. Nie musisz ponownie określać argumentów wiersza poleceń. Aby zobaczyć, co Docker wie o twoim kontenerze, możesz uruchomić docker inspect.

Wręcz przeciwnie, rm zniszczy wszystko, w tym brak trwałych danych, a pojemnik będzie musiał zostać odtworzony ponownie (Podając tym razem ponownie argumenty).

W końcowej nocie, należy bardzo dużo nazw użyty zamiast SHA1 gdy odnosi kontenerów w wierszu poleceń

+0

Dzięki @Aurelien Thieriot (+1) - w odniesieniu do twojego oświadczenia "* powinieneś bardzo używać nazw zamiast SHA1, kiedy odwołujesz się do kontenerów w linii poleceń *", czy mogę zapytać, dlaczego?!? – smeeb

+0

Cóż, prawdopodobnie nie ma na to żadnego dowodu ani podstawy, ale okazało się, że praca z nim jest o wiele wygodniejsza. Biorąc pod uwagę, że szybko rozpoczniesz łączenie kontenerów ze sobą, aktualizujesz i/lub zatwierdzasz obrazy. Uruchomienie polecenia znalezienia SHA1 będzie nużące. –

+0

Ponadto Docker generuje niesamowite i śmieszne losowe nazwy –

Powiązane problemy