Tło
Wolumin Docker pozwala dynamicznie montować niektóre pliki (takie jak pliki konfiguracyjne), aby nadpisać oryginalne pliki na obrazie podczas uruchamiania kontenera dockera, ale co się stanie, jeśli zamontujemy folder lub plik, który jeszcze nie istnieje na hostze, do kontenera? LZ napotkał taki problem w swojej pracy, więc sam go przećwiczył i zarejestrował wyniki eksperymentów w następujący sposób:
Montaż teczek
Zachowanie Dockera przy montowaniu teczek jest jednorodne, w następujący sposób:
- Jeśli folder nie istnieje, najpierw tworzy się go (lub rekurencyjnie, jeśli jest to folder wielopoziomowy)
- Nadpisz zawartość folderu w kontenerze z zawartością folderu na hostie
Szczegóły są następujące:
Folder na hostze istnieje i nie jest pusty
gospodarz | kontener | Rezultat montażu | | Istnieje niepusty folder A | Folder B, który nie istnieje | Najpierw utwórz folder B w Contanier, a następnie skopiuj wszystkie pliki z folderu A do B | | Istnieje niepusty folder A | Istnieje folder B bez pustości | Najpierw opróżni oryginalną zawartość pojemnika chińskiego folderu B, a następnie skopiuj chińską kopię do B |
Niezależnie od tego, czy folder B w kontenerze istnieje, A całkowicie nadpisuje zawartość B
Folder na hostze istnieje, ale jest pusty
gospodarz | kontener | Rezultat montażu | | Pusty folder A, który istnieje | Istnieje folder B bez pustości | Zawartość chińskiego folderu B jest opróżniona |
Zawartość odpowiadającego folderu w kontenerze jest opróżniana
Folder hosta nie istnieje
gospodarz | kontener | Rezultat montażu | | Folder A, który nie istnieje | Istnieje folder B bez pustości | Utwórz folder A na hostze, a zawartość chińskiego folderu B zostaje opróżniona | | Foldery A/B/C, które nie istnieją | Istnieje folder B bez pustości | Utwórz foldery A/B/C na hostze, a zawartość chińskiego folderu B jest opróżniana |
Zawartość odpowiadającego folderu w kontenerze jest opróżniana
streszczenie
Folder hosta na pewno nadpisze chiński folder kontenera:
gospodarz | kontener | Rezultat montażu | | Folder nie istnieje/folder istnieje, ale jest pusty | Folder nie istnieje/istnieje, ale jest pusty/istnieje i nie jest pusty | pojemnik chiński jest przykryty (opróżniony) | | Folder istnieje i nie jest pusty | Folder nie istnieje/istnieje, ale jest pusty/istnieje i nie jest pusty | zawartość chińskich folderów w kontenerze jest nadpisywana (oryginalna zawartość jest opróżniana, a zawartość folderu na hostie nadpisywana) |
Montaż pliku
Największa różnica między montowaniem plików a montażem folderów to:
- Docker zabrania montowania plików, które nie istnieją na hostze, do plików już istniejących w kontenerze
- Montaż plików nie ma wpływu na inne pliki w tym samym folderze
Ponadto jego zachowanie nadpisywania jest zgodne z montowaniem folderów, tzn.:
- Nadpisz zawartość pliku w kontenerze zawartością pliku na hostze
Szczegóły są następujące:
gospodarz
gospodarz | kontener | Rezultat montażu | | Pliki, które nie istnieją, configA.js | Dokumenty, które już istnieją, congfigB.js | Błąd, czy próbujesz zamontować katalog na pliku (czy odwrotnie)? Sprawdź, czy istnieje określona ścieżka hosta i czy jest typem oczekiwanym. Generuje dwa puste katalogi configA.js i configB.js na hostze jednocześnie, ale kontener nie może się uruchomić |
gospodarz
gospodarz | kontener | Rezultat montażu | | Obecny akt configA.js | Obecny akt congfigB.js | pojemnik chiński configB.js pozostać taki sam, ale zawartość pliku jest nadpisywana przez congfigA.js zawartość | | Obecny akt configA.js | Pliki, które nie istnieją, congfigB.js | Nowy plik configB.js w kontenerze z zawartością pliku configA.js pozostaje niezmieniony configB.js wszystkie pozostałe pliki pod tym plikiem |
streszczenie
Plik na hostze zawsze nadpisuje chiński folder kontenera
gospodarz | kontener | Rezultat montażu | | Pliki, które nie istnieją | Dokumenty, które już istnieją | Zakazane czyny | | Istniejące dokumenty | Pliki, które nie istnieją / pliki, które już istnieją | Dodaj/nadpisz (tworzy katalog, jeśli go nie ma) |
konkluzja
Montaż teczek
- Jeśli pozwolisz na zamontowanie nieistniejących lub pustych teczek w kontenerze, odpowiednie foldery w kontenerze zostaną opróżnione
- Dołączenie niepustego folderu do kontenera nadpisuje oryginalny folder w kontenerze
Montaż pliku
- Zabronione jest montowanie nieistniejących plików na plikach, które już istnieją w kontenerze
- Istniejące pliki zostaną nadpisane po dołączeniu do kontenera, a jeśli pliki nie istnieją, zostaną utworzone
Scenariusze zastosowań
- Z powyższej analizy wynika, że montowanie folderów służy do nadpisywania plików w całym folderze, więc może być stosowane, gdy do kontenera trzeba zamontować dużą liczbę plików, a ponadto, jeśli zamontowany jest pusty folder lub nieistniejący folder, zazwyczaj stosuje się go odwrotnie: to znaczy, po uruchomieniu kontenera niektóre pliki (np. logi) mogą być generowane pod folderem punktu montażu w kontenerze i wtedy można je bezpośrednio zobaczyć w folderze na odpowiednim hostze.
- Montaż plików jest często używany do montowania plików konfiguracyjnych w celu dynamicznej modyfikacji domyślnej konfiguracji w czasie działania, ponieważ nadpisuje tylko pojedynczy plik bez wpływu na inne pliki w tym samym folderze kontenera.
Przeniesiono z:Logowanie do linku jest widoczne.
(Koniec) |