2015-03-19 14 views
5

Mam obraz doka do dnae/hbase i został zbudowany z Ubuntu. Stworzyłem kontener tego obrazu i nadałem mu nazwę hb.Odpowiedź błędu od demona: Kontener CONTAINER_NAME nie jest uruchomiony

$ docker run -d --name hb dajobe/hbase 
e1f68ff8b3b6c5e474426e2566f8c087d6a785fc5eeb58cd2aeb86176068651d 

Następnie uruchomiłem/bin/bash na hb i sprawdziłem dostępność edytora vi.

$ docker exec -it hb /bin/bash 
[email protected]:/# vi 
bash: vi: command not found 

Wtedy zainstalowany edytor vi użyciu apt-get

# apt-get install vim 
Reading package lists... 
DoneBuilding dependency tree 
Reading state information... Done 
..... 
..... 

Chciałem, aby zatwierdzić zmiany, tak aby edytor vi może się utrzymać.

$ docker commit hb dajobe/hbase 
1be196188efc5a52562dc8ee1b63d0fd560ea163c49331c10dc435848d75ef64 

, a następnie, gdy ponownie zacząłem dajobe/hbase, automatycznie się zatrzymał.

$ docker run -d --name hb dajobe/hbase 
c3e7b9f48077ef854efc6f9bab5e85986e265c98de5423bece0000c973206c38 

$ docker exec -it hb /bin/bash 
FATA[0000] Error response from daemon: Container hb is not running 

Dlaczego kontener nie działa?

$ docker ps -a 
CONTAINER ID  IMAGE    COMMAND   CREATED     STATUS     PORTS  NAMES 
c3e7b9f48077 dajobe/hbase:latest "/opt/hbase-server" 11 secs ago   Exited (0) 8 secs ago      hb 

Dlaczego status "Wychodzę"? Przed zobowiązaniem nie miało to miejsca, status był "Up".

+0

Sprawdź poleceniem 'doker events' powód, patrz https://docs.docker.com/reference/commandline/cli/#events DOC, na przykład' zdarzenia Döcker --filter container = c3e7b9f48077' – user2915097

+0

nic nie dzieje się z tym poleceniem .. Uruchomię polecenie, a następnie nic się nie dzieje, potrzebuję zrobić Ctrl + C, aby zatrzymać. –

+0

po prostu 'zdarzenia docker' powinny nas oświecić – user2915097

Odpowiedz

1

Oczekuję, że status zostanie zamknięty. Być może oryginalny obraz, którego używałeś, miał ENTRYPOINT, który zrobił coś, co utrzymywało pojemnik uruchomiony podczas wykonywania go. Możesz spróbować:

docker run -d --name hb dajobe/hbase sleep 60 

Następnie spróbuj swojego exec, przez następne 60 sekund będziesz łączyć się z interaktywną powłoką. Następnie otrzymasz ponownie tę samą wiadomość.

-d powoduje, że kontener jest demonem. Musi jednak coś zrobić, w przeciwnym razie po prostu wychodzi! Czy próbowałeś już po prostu uruchomić linię z -it?

docker run -it --name hb dajobe/hbase bash 

Otrzymasz tam również komunikat zachęty, w którym możesz dokonać aktualizacji obrazu.

-g

+0

Tak, masz rację, "uśpij 60" pozwala na to, by kontener był aktywny przez 60 sekund. W rzeczywistości, 'uśpienie 60' zastępuje oryginalne polecenie'/opt/hbase-server'. Ale dlaczego serwer hbase wychodzi, kiedy próbuję z nowym obrazem? idealnie działało z oryginalnym. Czy oryginalny obraz i nowy obraz (commit) nie byłyby takie same ?, oprócz faktu, że popełniony zostałby zainstalowany na nim vim. –

+0

Nie wiem, w jaki sposób nowo zatwierdzony obraz dostaje swój WEJSCIE. Dokumentacja: https://docs.docker.com/reference/commandline/cli/#commit sugeruje, że powinieneś używać pliku Dockerfold, aby zachować swój obraz, zamiast robić to interaktywnie. Wtedy miałbyś wyraźną kontrolę. Nie wiem, czego należy się spodziewać, gdy działający obraz jest zawieszony i zapisany na nowym obrazie. – Greg

Powiązane problemy