Docker – Wprowadzenie do konteneryzacji (cz. 4)

Persystencja danych z użyciem named volumes

Do tej pory nasza aplikacja działała w kontenerze, ale miała jedną istotną wadę: po usunięciu kontenera traciliśmy wszystkie dane. To normalne, ponieważ kontener jest tymczasowy – kiedy go zatrzymasz i usuniesz, znika także jego system plików.

Rozwiązaniem tego problemu są wolumeny (volumes) w Dockerze. Dzięki nim możemy przechowywać dane w sposób trwały, niezależnie od cyklu życia kontenera.

1. Tworzenie wolumenu

Na początek stwórzmy wolumen o nazwie todo-db:

docker volume create todo-db

Możesz sprawdzić listę wolumenów poleceniem:

docker volume ls

2. Uruchomienie aplikacji z wolumenem

Teraz uruchomimy naszą aplikację Todo App i zamontujemy wolumen w katalogu /etc/todos:

docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started

➡️ Dzięki temu wszystkie dane aplikacji (np. zadania na liście) będą zapisywane w wolumenie, a nie tylko w kontenerze.

Dodaj teraz kilka nowych zadań do aplikacji Todo – np. przez interfejs w przeglądarce na http://localhost:3000.

3. Usuwanie kontenera

Zatrzymajmy i usuńmy kontener, aby sprawdzić, co stanie się z danymi.

Najpierw sprawdź uruchomione kontenery:

docker ps

Następnie usuń kontener (najpierw zatrzymując go):

docker stop CONTAINER_ID

docker rm CONTAINER_ID

lub jednym poleceniem:

docker rm -f CONTAINER_ID


4. Uruchomienie nowego kontenera z tym samym wolumenem

Teraz uruchommy aplikację ponownie – z tym samym wolumenem:

docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started

Wejdź do aplikacji w przeglądarce. Zauważysz, że Twoje zadania nadal tam są 🎉 – mimo że stary kontener został usunięty.

Leave a Reply