Nauka Dockera, część 6: Praca z danymi

W dzisiejszej części tłumaczenia serii materiałów o Dockerze porozmawiamy o pracy z danymi. W szczególności o woluminach Dockera. W tych materiałach stale porównywaliśmy mechanizmy programowania Dockera z różnymi jadalnymi analogiami. Nie odejdziemy tutaj od tej tradycji. Niech dane w Dockerze będą przyprawami. Na świecie jest wiele przypraw, a Docker ma wiele sposobów pracy z danymi.

Część 1: Podstawy
Część 2: terminy i koncepcje
Część 3: Pliki Docker
Część 4: Zmniejszanie rozmiaru obrazów i przyspieszanie ich montażu
Część 5: polecenia
Część 6: praca z danymi

Nauka Dockera, część 6: Praca z danymi

Informujemy, że niniejszy materiał został przygotowany przy użyciu silnika Docker w wersji 18.09.1 ​​oraz wersji API 1.39.

Dane w Dockerze mogą być przechowywane tymczasowo lub na stałe. Zacznijmy od danych tymczasowych.

Tymczasowe przechowywanie danych

Istnieją dwa sposoby zarządzania danymi tymczasowymi w kontenerach Docker.

Domyślnie pliki utworzone przez aplikację uruchomioną w kontenerze są przechowywane w zapisywalnej warstwie kontenera. Aby ten mechanizm działał, nie trzeba nic specjalnego konfigurować. Okazuje się tanio i wesoło. Aplikacja musi po prostu zapisać dane i kontynuować swoje działania. Jednak gdy kontener przestanie istnieć, dane zapisane w tak prosty sposób również znikną.

Tymczasowe przechowywanie plików w Dockerze to kolejne rozwiązanie, które sprawdza się w przypadkach, gdzie potrzebny jest wyższy poziom wydajności, niż jest to możliwe przy zastosowaniu standardowego mechanizmu tymczasowego przechowywania danych. Jeśli nie potrzebujesz, aby Twoje dane były przechowywane dłużej niż istnieje kontener, możesz połączyć się z kontenerem tmpfs – tymczasowym magazynem informacji korzystającym z pamięci RAM hosta. Przyspieszy to wykonywanie operacji zapisu i odczytu danych.

Często zdarza się, że dane trzeba przechowywać nawet po tym, jak kontener przestanie istnieć. Aby to zrobić, potrzebujemy trwałych mechanizmów przechowywania danych.

Trwałe przechowywanie danych

Istnieją dwa sposoby wydłużenia okresu istnienia danych w stosunku do okresu istnienia kontenera. Jednym ze sposobów jest zastosowanie technologii mocowania wiążącego. Dzięki takiemu podejściu możesz zamontować do kontenera np. prawdziwy folder. Procesy spoza Dockera również będą mogły pracować z danymi przechowywanymi w takim folderze. Właśnie tak Popatrz Technologia mocowania i mocowania tmpfs.

Nauka Dockera, część 6: Praca z danymi
Montowanie tmpfs i mocowanie wiązania

Wadą stosowania technologii bind mount jest to, że jej użycie komplikuje tworzenie kopii zapasowych danych, migrację danych i udostępnianie danych pomiędzy kilkoma kontenerami. Znacznie lepiej jest używać woluminów Dockera do trwałego przechowywania danych.

Okno dokowane woluminów

Wolumin to system plików znajdujący się na komputerze hosta poza kontenerami. Woluminy są tworzone i zarządzane przez Docker. Oto główne właściwości woluminów Dockera:

  • Są środkiem trwałego przechowywania informacji.
  • Są niezależne i oddzielone od kontenerów.
  • Można je współdzielić między różnymi kontenerami.
  • Umożliwiają zorganizowanie sprawnego odczytu i zapisu danych.
  • Woluminy można umieszczać w zasobach zdalnego dostawcy chmury.
  • Można je zaszyfrować.
  • Można im nadać imiona.
  • Kontener może zorganizować wstępne wypełnienie woluminu danymi.
  • Są wygodne do testowania.

Jak widać woluminy Dockera mają niesamowite właściwości. Porozmawiajmy o tym, jak je stworzyć.

Tworzenie woluminów

Woluminy można tworzyć za pomocą żądań Dockera lub API.

Oto instrukcja w pliku Dockerfile, która umożliwia utworzenie woluminu podczas uruchamiania kontenera.

VOLUME /my_volume

Stosując podobną instrukcję, Docker po utworzeniu kontenera utworzy wolumin zawierający dane, które już istnieją we wskazanej lokalizacji. Należy pamiętać, że jeśli utworzysz wolumin przy użyciu pliku Dockerfile, nie zwalnia to z konieczności określenia punktu podłączenia woluminu.

Możesz także tworzyć woluminy w pliku Dockerfile przy użyciu formatu JSON.

Ponadto woluminy można tworzyć za pomocą narzędzi wiersza poleceń, gdy kontener jest uruchomiony.

Praca z woluminami z wiersza poleceń

▍Tworzenie wolumenu

Możesz utworzyć samodzielny wolumin za pomocą następującego polecenia:

docker volume create —-name my_volume

▍Znajdź informacje o woluminach

Aby wyświetlić listę woluminów Dockera, użyj następującego polecenia:

docker volume ls

Możesz eksplorować konkretny wolumin w ten sposób:

docker volume inspect my_volume

▍Usuwanie woluminu

Możesz usunąć wolumin w następujący sposób:

docker volume rm my_volume

Aby usunąć wszystkie woluminy, które nie są używane przez kontenery, możesz skorzystać z następującego polecenia:

docker volume prune

Przed usunięciem woluminów Docker poprosi Cię o potwierdzenie tej operacji.

Jeśli wolumin jest powiązany z kontenerem, nie można go usunąć, dopóki odpowiedni kontener nie zostanie usunięty. Jednocześnie, nawet jeśli kontener zostanie usunięty, Docker nie zawsze to rozumie. Jeśli tak się stanie, możesz użyć następującego polecenia:

docker system prune

Został zaprojektowany do czyszczenia zasobów Dockera. Po wykonaniu tego polecenia powinno być możliwe usunięcie woluminów, których status był wcześniej nieprawidłowy.

Flagi --mount i --volume

Aby pracować z woluminami, po wywołaniu polecenia docker, często będziesz musiał używać flag. Na przykład, aby utworzyć wolumin podczas tworzenia kontenera, możesz użyć tej konstrukcji:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

W starożytności (do 2017 roku) flaga była popularna --volume. Początkowo ta flaga (można jej również używać w formie skróconej, wtedy wygląda -v) był używany w przypadku samodzielnych kontenerów i flagi --mount - w środowisku Docker Swarm. Jednak od wersji Docker 17.06 flaga --mount można wykorzystać w dowolnym scenariuszu.

Należy zauważyć, że podczas korzystania z flagi --mount zwiększa się ilość dodatkowych danych, które należy podać w poleceniu, ale z kilku powodów lepiej jest użyć tej konkretnej flagi, a nie --volume. Flaga --mount to jedyny mechanizm, który pozwala na pracę z usługami lub określanie opcji sterownika woluminu. Ponadto z tą flagą łatwiej się pracuje.

W istniejących przykładach poleceń manipulacji danymi Dockera można zobaczyć wiele przykładów użycia flagi -v. Próbując dostosować te polecenia do własnych potrzeb, należy pamiętać, że flags --mount и --volume używać różnych formatów parametrów. Oznacza to, że nie można po prostu wymienić -v na --mount i zdobądź pracujący zespół.

Główna różnica między --mount и --volume tak jest podczas używania flagi --volume wszystkie parametry są gromadzone razem w jednym polu i podczas używania --mount parametry są rozdzielone.

Podczas pracy z --mount parametry są reprezentowane jako pary klucz-wartość, czyli tak to wygląda key=value. Pary te oddziela się przecinkami. Oto często używane opcje --mount:

  • type — rodzaj mocowania. Wartość odpowiedniego klucza może wynosić związania, Tom lub tmpfs. Mówimy tu o wolumenach, czyli interesuje nas wartość volume.
  • source - źródło montażu. W przypadku woluminów nazwanych jest to nazwa woluminu. W przypadku woluminów nienazwanych ten klucz nie jest określony. Można to skrócić do src.
  • destination - ścieżka, do której plik lub folder jest montowany w kontenerze. Klucz ten można skrócić do dst lub target.
  • readonly - montuje zamierzony wolumin tylko do czytania. Użycie tego klucza jest opcjonalne i nie jest do niego przypisana żadna wartość.

Oto przykład użycia --mount z wieloma opcjami:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

Wyniki

Oto kilka przydatnych poleceń, których możesz użyć podczas pracy z woluminami Dockera:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Oto lista często używanych opcji --mount, stosowane w poleceniu formularza docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

Teraz, gdy zakończyliśmy tę serię dotyczącą Dockera, czas powiedzieć kilka słów o tym, gdzie mogą dalej podążać uczniowie Dockera. tutaj jest świetny, dobry artykuł o Dockerze. tutaj jest książka o Dockerze (kupując tę ​​książkę, staraj się uzyskać jej najnowsze wydanie). tutaj jest kolejna książka dla tych, którzy uważają, że praktyka to najlepszy sposób na naukę technologii.

Drodzy Czytelnicy! Jakie materiały dotyczące Dockera poleciłbyś początkującym do nauki?

Nauka Dockera, część 6: Praca z danymi

Źródło: www.habr.com

Dodaj komentarz