Tom tom Dockerfile

Tom tom Dockerfile
Po uruchomieniu kontenera Docker żaden z danych w tym kontenerze nie jest zapisywany. To mam na myśli, powiedzmy, że założyłeś kontener Docker. Następnie utworzyłeś niektóre pliki i foldery w katalogu (powiedzmy /dane) Tam. Po zatrzymaniu kontenera, wszystkie pliki i foldery w /dane Katalog zostanie usunięty. Po ponownym uruchomieniu kontenera będziesz musiał odtworzyć wszystkie pliki i foldery, jeśli potrzebujesz go ponownie. Żadne z danych nie będzie się utrzymywało.

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.

Korzystanie z woluminów w DockerFile:

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 "

Hello World (App1)

"> indeks.html

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ąć.

Dodawanie plików do objętości za pomocą DockerFile:

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.