CodeGym /Kursy /Docker SELF /Podstawy przechowywania danych w Dockerze

Podstawy przechowywania danych w Dockerze

Docker SELF
Poziom 19 , Lekcja 0
Dostępny

1.1 Wolumeny (Volumes)

Przechowywanie danych w Docker to istotna część pracy z kontenerami. Same kontenery są efemeryczne, co oznacza, że dane w ich wnętrzu zostaną utracone po zatrzymaniu lub usunięciu kontenera. Aby zachować dane pomiędzy uruchomieniami i zapewnić ich długoterminowe przechowywanie, Docker oferuje dwie główne technologie: wolumeny (volumes) i mounty katalogów (bind mounts).

Wolumeny (Volumes)

Wolumeny to zasoby zarządzane przez Docker, służące do przechowywania danych. Istnieją one niezależnie od cyklu życia kontenerów, co pozwala na ich użycie do długoterminowego przechowywania danych. Wolumeny mogą być tworzone i zarządzane przez Docker, co zapewnia wygodny sposób przechowywania danych poza kontenerami.

Zalety używania wolumenów

  1. Izolacja od hosta: wolumeny są przechowywane w specjalnym katalogu na hoście, zarządzanym przez Docker, co zapewnia ich izolację.
  2. Łatwość zarządzania: Docker oferuje wygodne komendy do tworzenia, usuwania i zarządzania wolumenami.
  3. Zgodność i przenośność: wolumeny można łatwo przenosić między różnymi hostami i używać z różnymi kontenerami.

Przykład stworzenia i użycia wolumenów

Tworzenie wolumenu:

Terminal

docker volume create my_volume

Użycie wolumenu w kontenerze:

W tym przykładzie wolumen my_volume jest montowany w katalogu /data wewnątrz kontenera my_container.

Terminal

docker run -d --name my_container -v my_volume:/data nginx

1.2 Powiązane katalogi (Bind Mounts)

Powiązane katalogi pozwalają montować określone katalogi hosta w kontenerach. To umożliwia kontenerom korzystanie z plików i katalogów znajdujących się na hoście, co jest szczególnie przydatne w czasie tworzenia i testowania, kiedy trzeba pracować z lokalnymi plikami.

Zalety korzystania z powiązanych katalogów:

  1. Bezpośredni dostęp do plików hosta: kontenery mogą bezpośrednio korzystać z plików i katalogów znajdujących się na hoście.
  2. Wygoda podczas developmentu: programiści mogą łatwo zmieniać pliki na hoście i widzieć te zmiany w kontenerach w czasie rzeczywistym.
  3. Elastyczność: powiązane katalogi mogą być dowolnymi katalogami na hoście, co daje większą elastyczność w zarządzaniu danymi.

Przykład korzystania z powiązanych katalogów

Uruchomienie kontenera z powiązanym katalogiem:

Terminal

docker run -d --name my_container -v /path/on/host:/data nginx

W tym przykładzie katalog /path/on/host na hoście jest montowany jako /data wewnątrz kontenera my_container.

Porównanie wolumenów i powiązanych katalogów:

Charakterystyka Wolumeny Powiązane katalogi
Przechowywanie danych Zarządzane przez Docker Zarządzane przez użytkownika
Izolacja Oddzielone od systemu plików hosta Wykorzystują system plików hosta
Wydajność Optymalizowana dla Dockera Zależy od systemu plików hosta
Zastosowanie Trwałe przechowywanie danych Development i testowanie

1.3 Praktyczne przykłady

Praktyczne przykłady użycia

Przykład 1: Użycie volumes dla bazy danych

Aby zapewnić długoterminowe przechowywanie danych bazy danych, można użyć volumes.

Tworzenie volume:

Terminal

docker volume create db_data

Uruchomienie kontenera bazy danych przy użyciu volume:

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

Przykład 2: Użycie bind directories dla web developmentu

Do tworzenia aplikacji webowej można użyć bind directories, aby zmiany w lokalnych plikach były od razu widoczne w kontenerze.

Uruchomienie kontenera z bind directory:

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

W tym przykładzie bieżąca lokalna ścieżka my_website jest montowana w katalogu /usr/share/nginx/html kontenera nginx.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION