Stronę tą wyświetlono już: 507 razy
Podczas uruchamiania instancji kontenera można było zauważyć, że w konsoli nie da się wprowadzać nowych poleceń. Dzieje się tak ponieważ uruchamiając instancję kontenera domyślnie uruchamiany jest on w trybie attached. W tym trybie konsola jest nie czuła na wprowadzanie zmian z linii poleceń i program uruchomiony w takiej instancji wyświetla różne informacje na temat swojego stanu, błędów i informacji jakie wypisywane są przez program w konsoli. Oto przykład:
docker run -p 8889:8888 --name node -v "${pwd}:/app" --rm node-api:1.0 > serwer-docker@1.0.0 start /app > nodemon -L index.js [nodemon] 2.0.16 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node index.js`
Co ciekawe po uruchomieniu instancji kontenera możliwe jest wyświetlenie logów związanych z daną instancją kontenera za pomocą polecenia:
docker container logs node > serwer-docker@1.0.0 start /app > nodemon -L index.js [nodemon] 2.0.16 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node index.js`
Gdzie w tym przypadku node jest nazwą kontenera
Możliwe jest też uruchomienie kontenera w trybie ditached z opcją -d najpierw jednak trzeba zakończyć żywot poprzedniej instancji:
docker container stop node
Ponieważ kontener uruchomiłem z opcją --rm, która powoduje automatyczne usunięcie kontenera więc nie muszę się bawić w usuwanie go z listy. Teraz już z najdzikszą rozkoszą mogę się oddać przyjemności uruchomienia instancji kontenera w trybie detatch:
docker run -p 8889:8888 --name node -v "${pwd}:/app" --rm -d node-api:1.0 e0dde5567ae56169443d6ab39f27f5f117d7561dc76f4479ab8e8629b5f5d06e
Tym razem w tej samej konsoli można wpisywać inne polecenia. Co jednak gdyby ktoś chciał (nie mówię, że ty, nie przeczę, że ja) a więc gdyby ktoś chciał uruchomić jakieś polecenie wewnątrz kontenera, np żeby sprawdzić jakie pliki się dodały do kontenera i jaka jest ich zawartość. Gdyby tylko istniał jakiś spryty (żeby nie powiedzieć przebiegły) sposób na uruchomienie instancji kontenera tak, żeby można było takie cuda wyczyniać! Nie lękaj się! Albowiem oto okazuje się, że istnieje taki tryb zwany interaktywnym, który można wywołać przy pomocy opcji -it w następujący sposób:
docker run -p 8889:8888 --name node -v "${pwd}:/app" --rm -it node-api:1.0 > serwer-docker@1.0.0 start /app > nodemon -L index.js [nodemon] 2.0.16 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node index.
Teraz, gdy w konsoli uruchomisz np. takie polecenie:
rs
[nodemon] starting `node index.js`
W tym przypadku możliwe będzie przeładowanie serwera.
Jeżeli zaś chcesz uruchamiać polecenia w prawdziwej konsoli instancji kontenera to:
docker exec -it node /bin/bash
W ten sposób można robić wszystko to, co w Linuks-owej konsoli, czyli np.:
lls controllers dockerfile index.js node_modules package-lock.json package.json routes
Jeżeli w przebiegły sposób zainstalowałeś w obrazie Midnight Commander-a to możesz zrobić także i to:
mc
Co z kolei spowoduje wyświetlenie interfejsu z poniższego screena.