Możesz użyć woluminów Docker, aby zaoszczędzić zmiany określonego katalogu kontenerów Docker. Krótko mówiąc, możesz przetrwać dane swoich kontenerów Docker za pomocą objętości Docker.
Możesz powiedzieć Docker, który katalog kontenera Docker utrzymuje zmiany w swoim Dockerfile Podczas tworzenia niestandardowych obrazów Docker za pomocą Dockerfile.
W tym artykule pokażę, jak korzystać z tomów dokera Dockerfile i jak zarządzać tymi tomami. Zacznijmy.
W tej sekcji utworzę niestandardowy obraz Docker serwera Apache 2 z obrazu Docker HTTPD: 2.4 i użyj objętości Docker, aby przetrwać dane Apache Webroot.
Najpierw utwórz nowy katalog (powiedzmy www3) dla twojego niestandardowego obrazu Docker (powiedzmy www: v1) i przejdź do tego:
$ mkdir www3 && cd www3
Teraz utwórz Dockerfile Z następującym poleceniem:
$ Touch Dockerfile
Teraz edytuj Dockerfile plik z Nano Lub krzepa Edytor tekstu.
Nano:
$ Nano Dockerfile
Krzepa:
$ vim dockerfile
Teraz dodaj do niego następujące wiersze i zapisz plik:
Tutaj, Z HTTPD: 2.4 oznacza, że podstawowym obrazem tego niestandardowego obrazu dokera jest HTTPD: 2.4
WorkDir/usr/local/apache2/htdocs oznacza, że kiedy wpadniesz w powłokę (interfejs wiersza poleceń) pojemników wykonanych z tego niestandardowego obrazu, będziesz w /usr/local/apache2/htdocs katalog kontenera domyślnie.
TOM /usr/local/apache2/htdocs oznacza, utwórz nowy wolumin dla każdego z kontenerów utworzonych z tego niestandardowego obrazu i przetrwaj wszystkie pliki w /usr/local/apache2/htdocs katalog tego pojemnika do tego nowego tomu.
Teraz, kiedy masz swój Dockerfile Gotowy, nadszedł czas na zbudowanie naszego niestandardowego obrazu Docker (nazywam to www: v1).
Aby zbudować niestandardowy obraz dokera www: v1 używając Dockerfile, Uruchom następujące polecenie:
$ Docker Build -t www: v1
Niestandardowy obraz dokera www: v1 jest utworzony pomyślnie.
Wymień lokalnie dostępne obrazy Docker:
Możesz wymienić wszystkie dostępne lokalnie obrazy Docker za pomocą następującego polecenia:
Lista obrazów $ Docker
Jak widać, www: v1 Obraz ma około 178 MB i został stworzony około minuty temu.
Praca z Docker Volumes and Conteners:
Utworzyliśmy obraz Docker obsługiwany przez wolumin www: v1 we wcześniejszej sekcji tego artykułu powyżej.
Aby utworzyć kontener Docker (powiedzmy App1) z niestandardowego obrazu Docker www: v1, Uruchom następujące polecenie:
$ Docker Run -d -it --name = app1 www: v1
Kontener Docker App1 należy utworzyć.
Teraz uruchom następujące polecenie, aby poruszyć skorupę App1 pojemnik:
$ Docker Exec -it App1 /bin /bash
Jak widać, jestem w /usr/local/apache2/htdocs katalog domyślnie.
Utwórzmy indeks.html Plik tutaj z następującym poleceniem:
$ echo "Teraz wyjdź z App1 pojemnik.
$ exit
Teraz uruchom następujące polecenie, aby znaleźć adres IP App1 pojemnik:
$ Docker Inspect App1 | Adres GREP
Jak widać, adres IP to 172.17.0.2
Teraz z dowolnej przeglądarki internetowej, jeśli odwiedzisz stronę przy 172.17.0.2, powinieneś zobaczyć indeks.html Strona, którą właśnie utworzyłeś.
Teraz sprawdźmy, czy trwałość działa, czy nie.
Najpierw zatrzymaj App1 kontener z następującym poleceniem:
$ Docker Container Stop App1
Następnie uruchom kontener ponownie z następującym poleceniem:
$ Docker Container Start App1
Teraz ponownie znajdź adres IP kontenera:
$ Docker InspectApp1 | Adres GREP
Jak widać, indeks.html Strona jest niezmieniona, gdy uzyskuję do niej dostęp z mojej przeglądarki internetowej. Oznacza to, że wolumin dokera utrzymuje dane z App1 pojemnik.
Zarządzanie wolumenami Docker:
Możesz wymienić wszystkie tomy Docker na komputerze za pomocą następującego polecenia:
Lista woluminów $ Docker
Jak widać, mam 2 tomy Docker na moim komputerze. Długi sześciokadciowy ciąg, jak zaznaczono na zrzucie ekranu poniżej, to automatyczne objętość generowana dla App1 pojemnik.
Po utworzeniu kontenera z obrazu Docker, który wykorzystuje objętości, dla każdego utworzonego kontenera zostanie wygenerowany nowy wolumin.
Na przykład stworzyłem inny kontener App2 z www: v1 obraz, który zbudowałem z Dockerfile który wykorzystuje głośność.
Jak widać, generowany jest nowy tom.
Oba te tomy zawierają różne dane. Dane utrzymują się tylko dla jednego pojemnika, dla którego został wygenerowany. Na przykład objętość wygenerowana dla App1 kontener utrzymuje dane tylko dla App1 pojemnik. To samo dotyczy App2 pojemnik. Objętość wygenerowana dla App1 kontener nie będzie przechowywać danych z App2 pojemnik.
Możesz usunąć objętości, jeśli już go nie potrzebujesz. Aby to zadziałało, musisz zatrzymać się i usunąć pojemnik, do tego objętość jest przymocowana. Jeśli spróbujesz usunąć głośność dołączoną do kontenera, otrzymasz następujący komunikat o błędzie.
Powiedzmy, że chcesz usunąć wolumin App2 pojemnik, najpierw uruchom następujące polecenia, aby zatrzymać i usunąć kontener:
$ Docker Container Stop App2
$ Docker Container RM App2<
Teraz usuń objętość, która była przymocowana do App2 kontener z następującym poleceniem:
$ Docker Volume RM 962B2D970BCD96DE860B348130A84AA86C0AAA55378B3DCE35225659679FF808
Głośność należy usunąć.
Możesz użyć KOPIUJ polecenie w twoim Dockerfile Aby skopiować pliki z komputera hosta do woluminów Docker. W ten sposób każdy kontener, który tworzysz z niestandardowego obrazu Docker. Możesz sprawdzić więcej KOPIUJ w Dockerfile dokumentacja.
Więc w zasadzie tak pracujesz z Docker Volumes za pomocą Dockerfile. Dziękujemy za przeczytanie tego artykułu.