CodeGym /Kursy /Docker SELF /Montowanie wolumenów

Montowanie wolumenów

Docker SELF
Poziom 12 , Lekcja 2
Dostępny

8.1 Wprowadzenie do wirtualnych dysków

Montowanie wolumenów (Volumes) — to jedna z najbardziej przydatnych funkcji Docker'a. Dzięki niej kontenery mogą łatwo pracować z danymi z maszyny hosta. Ta funkcja sprawia, że zarządzanie danymi jest elastyczne i wygodne: możesz przechowywać dane na długo, wymieniać się nimi między kontenerami i bez problemu robić kopie zapasowe lub przywracać dane, jeśli coś pójdzie nie tak.

Wolumeny (Volumes) w Docker — to sposób przechowywania danych tak, aby były niezależne od kontenerów. Nawet jeśli kontener zostanie usunięty, informacje zapisane w wolumenach pozostaną bezpieczne. Wolumeny można podłączać (montować) do kontenerów, co pozwala przechowywać dane osobno i używać ich wielokrotnie, niezależnie od tego, ile razy tworzysz lub usuwasz kontenery.

Główne rodzaje wolumenów

  1. Anonimowe wolumeny (Anonymous Volumes)
    • Są automatycznie tworzone przez Docker, jeśli kontener nie ma jawnie wskazanego wolumenu.
    • Używane do tymczasowego przechowywania danych.
  2. Nazwane wolumeny (Named Volumes)
    • Są tworzone i zarządzane przez Docker.
    • Mogą być podłączane do wielu kontenerów i pozostają zachowane nawet po ich usunięciu lub zatrzymaniu.
  3. Wolumeny z przypięciem (Bind Mounts)
    • Łączą katalog na maszynie hosta z katalogiem w kontenerze.
    • Są idealne do uzyskiwania dostępu do danych systemu hosta i wygodne podczas tworzenia aplikacji.

Podstawowa składnia polecenia docker run do montowania wolumenów


-v <host_path>:<container_path>

Pełna składnia:


docker run -v <host_path>:<container_path> [OPTIONS] IMAGE [COMMAND] [ARG...]

Główne opcje do montowania wolumenów

1. Opcja -v lub --volume

Używana do tworzenia nazwanego wolumenu lub wolumenu z przypięciem.

Przykład:

Terminal

docker run -d -v /host/data:/container/data nginx

2. Opcja --mount

Zapewnia bardziej elastyczny i szczegółowy sposób montowania wolumenów, wspierając dodatkowe parametry.

Przykład:

Terminal

docker run -d --mount type=bind,source=/host/data,target=/container/data nginx

8.2 Tworzenie i używanie wolumenów

1. Nazwane wolumeny

Nazwane wolumeny są tworzone i zarządzane przez Docker. Służą do trwałego przechowywania danych, które powinny być zachowane pomiędzy restartami lub usuwaniem kontenerów.

Tworzenie nazwanego wolumenu:

Terminal

docker volume create my_volume

Uruchamianie kontenera z zamontowaniem wolumenu:

W tym przykładzie wolumen my_volume jest montowany do katalogu /data wewnątrz kontenera my_container. Wszystkie dane zapisane w /data zostaną zachowane w wolumenie i będą dostępne nawet po usunięciu kontenera.

Terminal

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

2. Anonimowe wolumeny

Anonimowe wolumeny są automatycznie tworzone przez Docker i są powiązane z konkretnym kontenerem. Są przydatne dla tymczasowych danych, które nie muszą być przechowywane po usunięciu kontenera.

Uruchamianie kontenera z anonimowym wolumenem:

W tym przykładzie Docker automatycznie stworzy anonimowy wolumen i zamontuje go do katalogu /data wewnątrz kontenera.

Terminal

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

3. Powiązane katalogi

Powiązane katalogi pozwalają na montowanie katalogów systemu hosta do kontenerów. Jest to wygodne dla współdzielenia danych pomiędzy kontenerami a systemem hosta. Taki sposób często stosowany jest podczas programowania, gdy kod źródłowy znajduje się w systemie hosta.

Uruchamianie kontenera z powiązanym katalogiem:

W tym przykładzie katalog /host/data na maszynie hosta jest montowany do katalogu /container/data wewnątrz kontenera my_container.

Terminal

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

8.3 Przykłady użycia wolumenów

1. Zapisywanie danych bazy danych

Użycie wolumenów dla baz danych pomaga zachować dane nawet przy restartach i aktualizacjach kontenera. To szczególnie ważne dla niezawodnego działania w środowiskach produkcyjnych.

Przykład:

W tym przykładzie dane PostgreSQL są zapisywane w wolumenie db_data, co gwarantuje ich zachowanie przy restarcie lub usunięciu kontenera.

Terminal

docker volume create db_data
docker run -d -v db_data:/var/lib/postgresql/data --name postgres_container postgres

2. Współdzielenie danych między kontenerami

Czasami trzeba dzielić dane między kilkoma kontenerami. Wolumeny pozwalają łatwo to zrobić.

Przykład

Utworzymy wolumen i uruchomimy dwa kontenery, które będą używać tego wolumenu. Oba kontenery uzyskają dostęp do danych w wolumenie shared_data, co umożliwia im wymianę informacji.

Terminal

docker volume create shared_data
docker run -d -v shared_data:/data --name container1 nginx
docker run -d -v shared_data:/data --name container2 nginx

3. Rozwój i testowanie

Przy tworzeniu aplikacji wygodnie jest używać podłączonych katalogów do współdzielenia kodu źródłowego między kontenerem a maszyną hosta. To pozwala programistom edytować kod na hoście, a kontenerowi — od razu pracować z aktualizacjami.

Przykład

W tym przykładzie katalog /path/to/source na maszynie hosta jest montowany w katalogu /app wewnątrz kontenera dev_container. Dzięki temu kontener może używać aktualnego kodu źródłowego bezpośrednio z systemu hosta.

Terminal

docker run -d -v /path/to/source:/app --name dev_container node
<

8.4 Zarządzanie wolumenami

Docker oferuje wygodne komendy do zarządzania wolumenami, dzięki którym można łatwo tworzyć, usuwać i sprawdzać informacje o wolumenach.

1. Wyświetlenie wszystkich wolumenów

Ta komenda wyświetla listę wszystkich dostępnych wolumenów na maszynie hosta.

Terminal

docker volume ls

2. Wyświetlenie informacji o wolumenie

Za pomocą tej komendy można uzyskać szczegółowe dane o wolumenie my_volume: jego lokalizacji w systemie plików hosta oraz informacji o kontenerach, które używają tego wolumenu.

Terminal

docker volume inspect my_volume

3. Usuwanie wolumenu

Ta komenda usuwa wolumen my_volume. Przed usunięciem ważne jest, aby upewnić się, że wolumen nie jest używany przez żaden kontener, w przeciwnym razie komenda nie zostanie wykonana.

Terminal

docker volume rm my_volume

8.5 Backup wolumenów

Dla bezpieczeństwa danych ważne jest posiadanie możliwości tworzenia kopii zapasowych wolumenów i ich przywracania w razie potrzeby.

1. Tworzenie backupu wolumenu

W tym przykładzie zawartość wolumenu my_volume jest archiwizowana do pliku my_volume_backup.tar.gz, który jest zapisywany w katalogu /backup na maszynie hosta.

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar czf /backup/my_volume_backup.tar.gz /volume

2. Przywracanie wolumenu

Ten przykład przywraca zawartość wolumenu my_volume z kopii zapasowej, która jest przechowywana w pliku my_volume_backup.tar.gz.

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar xzf /backup/my_volume_backup.tar.gz -C /volume
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION