Docker – Wprowadzenie do konteneryzacji (cz. 2)

Aktualizacja aplikacji i ponowne uruchomienie kontenera

W poprzednim wpisie pokazaliśmy, jak z prostą aplikacją, zbudować jej obraz przy użyciu Dockera i uruchomić ją w kontenerze. Teraz zajmiemy się tym, co zrobić, gdy zmienimy coś w kodzie źródłowym aplikacji – czyli typowym scenariuszem pracy deweloperskiej.

1. Aktualizacja kodu źródłowego

Załóżmy, że edytujesz plik src/index.js.
Chcesz, żeby po tej zmianie aplikacja zastosowała zmiany – ale aktualnie działający kontener nadal pokazuje starą aplikację.

2. Budowanie nowego obrazu

Po dokonaniu zmian w kodzie musisz zbudować nowy obraz, który zawiera zaktualizowaną wersję aplikacji:

docker build -t getting-started .

To nadpisze poprzedni obraz o nazwie getting-started.

3. Uruchomienie nowej wersji kontenera

Spróbuj uruchomić nowy kontener:

docker run -dp 3000:3000 getting-started

⚠️ Błąd! Prawdopodobnie otrzymasz komunikat, że port 3000 jest już zajęty. To dlatego, że stary kontener nadal działa.

4. Sprawdzenie i usunięcie starego kontenera

a) Sprawdź, które kontenery są uruchomione:

docker ps

Zobaczysz coś takiego:

CONTAINER ID IMAGE ... PORTS NAMES
abc123456789 getting-started ... 0.0.0.0:3000->3000/tcp inspiring_shaw

b) Zatrzymaj i usuń kontener:

Możesz to zrobić na dwa sposoby:

Metoda 1: Ręczne zatrzymanie i usunięcie

docker stop abc123456789

docker rm abc123456789

Metoda 2: Jednym poleceniem

docker rm -f abc123456789

Metoda 3: GUI – Docker Desktop

Jeśli korzystasz z Docker Desktop, możesz wejść do interfejsu graficznego, znaleźć uruchomiony kontener, kliknąć “Stop” i potem “Remove”.

5. Uruchomienie nowej wersji aplikacji

Po usunięciu starego kontenera uruchom aplikację ponownie:

docker run -dp 3000:3000 getting-started

Wejdź na http://localhost:3000 i zobacz nowy komunikat 🎉

Docker – Wprowadzenie do konteneryzacji

W dzisiejszym świecie tworzenia aplikacji coraz częściej spotykamy się z pojęciem konteneryzacji. Dzięki niej możemy łatwo pakować aplikacje wraz z całym środowiskiem uruchomieniowym, co upraszcza wdrażanie i eliminuje problem „u mnie działa”. Najpopularniejszym narzędziem do konteneryzacji jest Docker.

W tym wpisie pokażę Ci, jak można  w obrazie kontenerowym zbudować aplikację i uruchomić ją lokalnie.

I. Tworzenie aplikacji w kontenerze

1. Stworzenie aplikacji

Na początek potrzebujemy aplikacji. Będzie to aplikacja napisana w Node.js. i jest to przykładowa lista rzeczy do zrobienia:

Przykład zaciągnięty z: https://www.docker.com/101-tutorial/

2. Budowanie obrazu aplikacji

Aby uruchomić aplikację w kontenerze, musimy stworzyć Dockerfile – plik, który opisuje, jak zbudować obraz naszej aplikacji.

a) Tworzenie pliku Dockerfile

Utwórz plik Dockerfile w katalogu głównym projektu i dodaj do niego następującą treść:

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]

Opis poszczególnych poleceń:

  • FROM node:18-alpine – bazujemy na oficjalnym obrazie Node.js.

  • WORKDIR /app – ustawiamy katalog roboczy.

  • COPY . . – kopiujemy wszystkie pliki do kontenera.

  • RUN yarn install --production – instalujemy zależności.

  • CMD ["node", "src/index.js"] – komenda uruchamiająca aplikację.

b) Budowanie obrazu

Otwórz terminal w katalogu z projektem i uruchom:

docker build -t getting-started .

 

To polecenie zbuduje obraz kontenerowy i nazwie go getting-started.

3. Start kontenera aplikacji

Gdy obraz jest już gotowy, możemy uruchomić kontener:

docker run -dp 3000:3000 getting-started

 

  • -d – uruchamia kontener w tle (detached mode),

  • -p 3000:3000 – mapuje port lokalny 3000 na port 3000 w kontenerze.

Teraz wystarczy wejść w przeglądarkę i otworzyć:

http://localhost:3000

Powinieneś zobaczyć pustą listę rzeczy do zrobienia.  🎉

 

Sklonowanie większego dysku na mniejszy – Clonezilla

      W największej możliwej ilości przypadków możliwa jest sytuacja, że kupiłeś/aś prawdopodobnie laptop z 1TB dyskiem magnetycznym.
Dobrym rozwiązaniem jest przenieść dane z dysku HDD (magnetycznego) na SSD (dysk flashowy), ponieważ jest on około 10-krotnie szybszy.
Większość dysków w laptopach ma rozmiar 2,5”. Chyba, że posiada się jeszcze szybszy typ NVMe (uwaga! tu opisany w poście program może mieć problem z jego wykryciem z powodu sterowników, i tu trzeba kombinować).

Dysk 2,5” SSD o pojemności 256GB można na chwilę obecną dostać za sumę około 70zł lub 512GB za około 110zł – a różnica w działaniu za te pieniądze jest kolosalna. A dokładniej odczyt/zapis informacji na dysku jest zoptymalizowany parokrotnie.
Laptop ciszej pracuje i uszkodzenie dysku SSD w trakcie spoczynku i pracy jest dużo trudniejsze.

Teraz opiszę przykładowe kroki/etapy działania:

  1. Pierwsza rzecz.
    Kupujemy 2,5” dysk SSD na złączu SATA. Od I do III modele są kompatybilne wstecz. Więc, jeżeli, np. w laptopie mamy Satę I i kupimy dysk na złączu III, to nie będzie żadnego problemu z działaniem.
  2. Po drugie – musimy mieć jakiś pendrive, aby utworzyć, np. przy pomocy Rufus-a bootowalny dysk z Clonezilla. Wyszukujemy obraz iso tego unix-owego systemu i montujemy na posiadanym pendrivie.

Mamy już nowy dysk i bootowalny dysk z Clonezillą (jest to w pełni darmowy program do klonowania partycji/dysków).
I teraz: albo mamy miejsce na drugi 2,5” dysk w laptopie albo musimy posiadać adapter na złącze USB lub inne by podłączyć nowy dysk do naszego komputera.

3. Najpierw powinniśmy podłączyć sam nasz nowy dysk i utworzyć tablicę partycji -> partycję (np. ms-dos/ lub fat32) na SSD, gdyż Clonezilla tego nie zrobi. Możemy do tego użyć unixowego programu GParted lub jakiegoś darmowego windowsowego programu do partycjonowania dysków.

4. Odpalamy Clonezillę.

Wybieramy opcję nam odpowiadającą typu, np. dysk->to->image.

I jeszcze jedna bardzo ważna kwestia: partycje z danymi powinny mieścić się w rozmiarze nowego dysku ( z większym Clonezilla sobie nie poradzi).

Czyli w tym celu używamy znowu jakiegoś programu do partycjonowania i zmieniamy obrazy partycji systemów, tak by nam odpowiadały. Pamiętajmy, jednak, by nie ruszać partycji EFI, bootowalnych, itp.
Dane z rozmiarami wszystkich partycji muszą mieścić się w zakresie pojemności nowego dysku.

5. Tworzymy obraz dysku.

6. Następnie odtwarzamy obraz dysku HDD na naszym nowym dysku SSD.

Alternatywnie można użyć, jak ktoś woli GUI, czyli z graficznym interfejsem użytkownika – program Rescuezilla.

Ważna wskazówka:
Wszystkie partycje powinny być umieszczone jak na stosie od lewej do prawej i mieścić się w rozmiarze nowego dysku.