Backend, Praca w IT

Docker tip & scripts, czyli jak pracuję z kontenerami

Pisząc oprogramowanie w .NET Core, które z założenia ma być uruchamiane w chmurze, na pewno będzie podlegało konteneryzacji. Niniejszy wpis nie będzie jednak o tym, jak tworzyć kontenery, lecz o tym jak szybko je budować oraz uruchamiać, a w razie konieczności wyłączać i czyścić. Każdy z przedstawionych poniżej przykładów sprawdziłem i szczerze polecam.

Łukasz Kurzyniec. Full Stack developer w PGS Software. Pasjonat nowych technologii, entuzjasta JavaScript. Na co dzień pracuje w technologiach webowych ASP.NET Web API oraz .NET Core. Programowaniem zajmuje się od początku studiów – to właśnie wtedy połknął przysłowiowego bakcyla. Przez cały czas sprawia mu to wiele przyjemności oraz satysfakcji, ponieważ lubi kombinować i widzieć efekty swojej pracy. Po godzinach prowadzi bloga kurzyniec.pl, w którym dzieli się swoimi doświadczeniami dotyczącymi pracy .netowca.


Budowanie obrazu

Do szybkiego budowania obrazu posługuję się następującym skryptem (plikiem wsadowym bat).

Powyższy skrypt w pierwszej kolejności tworzy zmienną ze ścieżką bezwzględną do folderu z repozytorium (2). Następnie przechodzi do tego folderu (4). Potem pobiera najnowsze kody źródłowe z repozytorium (6 i 7). Na koniec uruchamia komendę docker build z odpowiednimi parametrami w celu zbudowania obrazu aplikacji (9). Pierwszy parametr --file, -f to ścieżka do pliku z instrukcjami, tzw. dockerfile. Kolejny parametr --tag, -t to nazwa i tag obrazu, pod którą będzie można zidentyfikować obraz w repozytorium obrazów. Ostatni parametr . (kropka) definiuje kontekst – obecny folder ze wszystkimi plikami zostanie wysłany do procesu tworzenia obrazu.

Po wykonaniu powyższego skryptu konsola wyświetli komunikat z informacje iż obraz został zbudowany i oznaczony.

Uruchamianie kontenera

Poniższy skrypt uruchamia ówcześnie zbudowany obraz.

Tutaj ponownie skrypt ustawia ścieżkę bezwzględną repozytorium (2) oraz przechodzi do tej lokalizacji (4). Ostatnia komenda docker run uruchomienia kontener (6). Pierwszy parametr --detach, -d uruchamia kontener w tle i zwraca jego ID. Drugi parametr --env, -e ustawia zmienne środowiskowe, w moim przypadku są to klucze dostępu do chmury AWS. Trzeci parametr --publish, -p odpowiedzialny jest za zmapowanie portów aplikacji w kontenerze z portami naszego systemu. Na końcu komendy znajduje się nazwa i tag obrazu, który chcemy uruchomić.

Po wykonaniu powyższego skryptu, zgodnie z parametrem -d, otrzymamy ID kontenera. Wykonując komendę docker container ls możemy wylistować uruchomione kontenery i potwierdzić, że nasz kontener “wstał i ma się dobrze”.

Czasami zdarzy się, że kontener nie chce się uruchomić. W takich sytuacjach należy czytać komunikaty zwracane przez proces docker, ponieważ znajdziemy w nich ich przyczyny. W niektórych przypadkach problem rozwiązuje wyczyszczenie repozytorium i zbudowanie obrazu na nowo, w innych lekarstwem okazuje się ponowne uruchomienie komputera.

Czyszczenie kontenerów

Ostatni, krótki skrypt robi dwie proste rzeczy – zatrzymuje uruchomione kontenery, a następnie czyści repozytorium.

Skrypt uruchamia proces powershell, w którym przy pomocy przetwarzania potokowego wykonuje komendę docker container ls z parametrem --all, -a odpowiedzialnym za wylistowanie wszystkich kontenerów oraz parametrem --quiet, -q, który mówi procesowi docker iż lista ma zawierać tylko i wyłącznie ID kontenerów. Dla każdego zwróconego ID kontenera uruchamiana jest w pierwszej kolejności komenda docker container stop do zatrzymania kontenera, a następnie komenda docker container rm odpowiedzialna za usunięcie kontenera z repozytorium.

Po wykonaniu powyższego skryptu dostajemy listę zatrzymanych, a następnie usuniętych kontenerów.

Tip

Powyższe skrypty trzymam w lokalizacji c:docker. Skrypty nazywają się odpowiednio !build_configurations_api.bat, !run_configurations_api.bat oraz !clean_containers.bat (tak, nazwa każdego z plików rozpoczyna się wykrzyknikiem). Ścieżkę c:docker dodaną mam do zmiennej środowiskowej Path. Dzięki temu w dowolnej lokalizacji wpisuję wykrzyknik, klikam TAB na klawiaturze i w szybki sposób mogę przeiterować po wszystkich skryptach, a następnie uruchomić jeden z nich.

A Wy macie jakieś przydatne porady, skrypty? Podzielcie się proszę w komentarzu, chętnie wypróbuję i zaadaptuję.


Artykuł został pierwotnie opublikowany na blogu autora. Do przygotowania zdjęcia głównego wykorzystano grafikę pochodzącą z pexels.com.

Podobne artykuły