Wprowadzenie
Wolumeny danych Docker to ważna koncepcja podczas konteneryzacji aplikacji. Zrozumienie tej koncepcji jest kluczowe dla zapewnienia najlepszego działania skonteneryzowanej aplikacji, a także niezawodnego utrwalania i zarządzania danymi. Jednak choć koncepcja ta jest ważna, dla wielu programistów jest również myląca i skomplikowana. Ważne jest, aby programiści i specjaliści DevOps rozumieli, jak konfigurować wolumeny danych Docker, znali ich prawidłowe użycie, różne rodzaje wolumenów oraz wiedzieli, który typ wybrać dla swojej aplikacji.
Ten samouczek koncentruje się na wyjaśnieniu koncepcji i użycia wolumenów danych Docker. Po ukończeniu tego samouczka opanujesz konfigurację i pracę z dowolnym typem wolumenu danych Docker.
Wymagania wstępne
Aby móc śledzić ten samouczek, będziesz potrzebować następujących elementów:
- Ubuntu zainstalowanego. Sprawdź nasz Jak skonfigurować serwer Ubuntu 18.04 samouczek, aby uzyskać szybkie odniesienie.
- Użytkownik Ubuntu z uprawnieniami sudo. Ten krok może być skomplikowany, szczególnie jeśli nie znasz Linuksa. Przeczytaj Konfiguracja pliku Sudoers w systemie Linux w celu uzyskania szczegółowego przewodnika.
- Docker zainstalowany na Ubuntu. Aby zainstalować platformę Docker na swoim systemie Ubuntu, możesz postępować zgodnie z naszym Jak zainstalować & obsługiwać platformę Docker na Ubuntu w chmurze publicznej blogiem.
Chociaż ten samouczek koncentruje się na zarządzaniu platformą Docker na systemie Ubuntu, docker polecenia mają zastosowanie we wszystkich systemach operacyjnych z zainstalowaną platformą Docker.
Zrozumienie działania kontenerów Docker
Aby w pełni zrozumieć wolumeny danych Docker, musisz wiedzieć, jak działają kontenery Docker. W tej sekcji przedstawiamy omówienie podstaw dla nowych użytkowników platformy Docker. Jeśli wiesz, jak działa Docker lub jesteś jego doświadczonym użytkownikiem, możesz pominąć tę sekcję i przejść od razu do wolumenów danych.
Kontenery Docker umożliwiają uruchamianie aplikacji na systemie operacyjnym hosta poprzez instalację platformy Docker. Ponieważ platforma Docker jest zainstalowana na systemie operacyjnym hosta, tworzy się abstrakcja między maszyną hosta a aplikacją-gościem. W przeciwieństwie do maszyny wirtualnej, kontener Docker współdzieli jądro Linuksa z systemem operacyjnym hosta. Ponieważ Docker nie wymaga instalowania żadnego dodatkowego systemu operacyjnego na maszynie hosta, aplikacje Docker są lekkie i dostępne na wszystkich maszynach hosta, o ile zainstalowano na nich platformę Docker.
Ponieważ nie ma dodatkowego systemu operacyjnego gościa, platforma Docker współdzieli zasoby z maszyną hosta. Uruchomienie aplikacji Docker jest szybkie, ale komplikacje pojawiają się, gdy trzeba współdzielić zasoby. Docker nie ma własnej pamięci ani pamięci masowej do utrwalania danych. Zasoby te muszą pochodzić z maszyny hosta. Osoby przyzwyczajone do korzystania z maszyn wirtualnych uważają ten proces współdzielenia i zarządzania zasobami za trudny. Brak odpowiedniej wiedzy może prowadzić do nieoczekiwanych i niepożądanych rezultatów. Chociaż ten samouczek zakłada, że znasz ekosystem Docker, zachęcamy do zapoznania się z naszym szczegółowym samouczkiem Co to jest Docker? Przegląd ekosystemu Docker w celu szybkiego odświeżenia wiedzy.
Utrwalanie danych przy użyciu wolumenów danych Docker
Podczas pracy z platformą Docker nie można bezpośrednio utworzyć wolumenu w jej wnętrzu. Dlatego, aby przechowywać dane, musimy utworzyć kontener wolumenu Docker z dołączonym do niego wolumenem. Aby połączyć naszą aplikację Docker z tym kontenerem wolumenu danych, używamy polecenia Docker’s --volume-from służącego do pobrania kontenera i dołączenia go do naszej aplikacji.
Przejdziemy przez ten proces krok po kroku:
- Najpierw utwórz nowy kontener o nazwie
my-container uruchamiając poniższe polecenie:
1docker create -v /tmp --name my-container ubuntu
To utworzy nowy kontener w folderze /tmp . W razie potrzeby możesz zmienić katalog folderu. - Teraz, gdy Twój kontener danych jest gotowy, możesz do niego zapisywać, uruchamiając nowy kontener Ubuntu z flagą
--volume-from , a następnie uruchamiając
bash. Wszystko, co zapiszemy w
tmp katalog zostanie zapisany na naszej maszynie hosta w
/tmp folderze:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Opcja -t wiersza poleceń wywołuje terminal z wnętrza kontenera. Flaga -i sprawia, że połączenie jest interaktywne. W wierszu poleceń bash dla kontenera Ubuntu utwórz plik w /tmp:
1echo "Some sample data" > /tmp/sample_file - Na koniec wyjdź z basha, uruchamiając polecenie
exit . Następnie uruchom poniższe polecenie:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Znajdziesz swój sample_file w tym katalogu. Nie ma ograniczeń co do liczby wolumenów, które można określić. Możesz dodać tyle wolumenów, ile chcesz, używając flagi --volumes-from . Możesz także utworzyć tyle kontenerów wolumenów danych, ile chcesz.
Dostęp do danych między hostem a kontenerem Docker
Dla czytelników doświadczonych w wirtualizacji ta opcja jest podobna do opcji folderu współdzielonego w maszynach wirtualnych. Tutaj zamiast tworzyć kontener data-only , uruchamiamy naszą aplikację Docker przy użyciu obrazu Docker i nadpisujemy jeden z jego katalogów zawartością katalogu w systemie hosta.
A common scenario would be to save the log files in the host machine. This might be needed so that we can analyze these files as needed without having to go inside the machine. For this scenario suppose you are using the obrazu Docker Nginx i chcesz przechowywać jego pliki dziennika na maszynie hosta. Obraz Docker Nginx zapisuje logi w katalogu /var/log/nginx , ale jest to /var/log/nginx wewnątrz kontenera Docker Nginx. W związku z tym ta lokalizacja nie jest dostępna dla maszyny hosta.
Aby osiągnąć nasz cel, musielibyśmy utworzyć folder współdzielony do przechowywania logów między maszyną hosta a obrazem Docker Nginx. Poniżej zilustrujemy ten proces w prostym przewodniku krok po kroku:
- Najpierw utwórz katalog na maszynie hosta, w którym chcesz przechowywać logi:
Następnie uruchom kontener, wykonując poniższe polecenie:1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- To polecenie
run przyjmuje kilka argumentów, więc rozbijmy je na części, aby lepiej je zrozumieć:
- -p 5000:80: Konfiguruje przekierowanie portów. Kontener Nginx domyślnie nasłuchuje na porcie 80 , co mapuje port kontenera Nginx 80 na port 5000 w systemie hosta.
- -d: Uruchamia proces w tle (odłącza go).
- -v ~/my-nginxlogs:/var/log/nginx: Łączymy katalog /var/log/nginx z wnętrza kontenera Nginx z katalogiem /my-nginxlogs na maszynie hosta. Ten znak : oddziela ścieżkę hosta od ścieżki kontenera. Ścieżka hosta zawsze jest pierwsza.
Teraz, gdy nasz kontener Nginx działa, najpierw sprawdź, czy serwer Nginx działa na porcie maszyny hosta 5000 , otwierając przeglądarkę internetową i przechodząc pod adres URL: http://localhost:5000. Gdy pojawi się strona powitalna, Twój serwer Nginx jest gotowy i tworzy logi w swoim folderze /var/log/nginx .
Jeśli otworzysz folder /my-nginxlogs na maszynie hosta, zobaczysz tutaj pliki logów z kontenera Docker Nginx. Jeśli dokonasz zmian w folderze /my-nginxlogs na maszynie hosta podczas działania kontenera Nginx, zmiany zostaną odzwierciedlone również w folderze kontenera /var/log/nginx .
Podsumowanie
W tym samouczku kompleksowo omówiliśmy wolumeny danych Docker (Docker Data Volumes). Przyjrzeliśmy się tworzeniu wolumenów dla aplikacji, udostępnianiu danych między hostem a kontenerem Docker, typom danych oraz utrwalaniu danych. Pomoże Ci to w utrwalaniu danych w skonteneryzowanych aplikacjach, a także w zarządzaniu stanem i konfiguracją aplikacji.
Aby dowiedzieć się więcej o Dockerze, zapoznaj się z poniższymi samouczkami na naszym blogu:
- Jak hostować repozytorium obrazów Docker i budować obrazy Docker za pomocą własnej instancji GitLab na Ubuntu 20.04
- Budowanie i wdrażanie aplikacji Flask za pomocą Dockera na Ubuntu 20.04
- Konfiguracja prywatnego rejestru Docker na Ubuntu 18.04
- Jak udostępniać dane między kontenerem Dockera a hostem
- Czyszczenie zasobów Dockera – obrazów, kontenerów i wolumenów
Miłego korzystania z komputera!
Komentarze
Brak komentarzy. Bądź pierwszy.