Pojęcia dotyczące magazynu dla kontenerów
Kontenery systemu Windows domyślnie używają magazynu efemerycznego (miejsca tymczasowego) dla wszystkich danych wejściowych i wyjściowych. Każdy kontener ma własne miejsce na pliki tymczasowe, w którym są przechwytywane wszystkie operacje tworzenia plików i zapisu plików, dzięki czemu nie zostaną one przechwycone na hoście. Po usunięciu wystąpienia kontenera wszystkie zmiany, które wystąpiły w miejscu tymczasowym, są odrzucane. Po uruchomieniu nowego wystąpienia kontenera dla wystąpienia zostanie udostępnione nowe miejsce na pliki tymczasowe.
Magazyn warstwowy
Wszystkie kontenery są tworzone na podstawie obrazów kontenerów. Obraz kontenera to pakiet plików zorganizowanych w stos warstw (nazywany magazynem warstw), który znajduje się na komputerze lokalnym lub w zdalnym rejestrze kontenerów. Obraz kontenera składa się z plików systemu operacyjnego trybu użytkownika wymaganych do:
- Obsługa aplikacji
- Dowolne środowisko uruchomieniowe aplikacji
- Zależności aplikacji
- Wszelkie inne różne pliki konfiguracji, które aplikacja musi działać prawidłowo
W środowisku systemu Windows warstwy są przechowywane przy użyciu systemu cimFS i są obsługiwane w systemie plików NTFS (New Technology File System), ReFS lub RefDisks dla magazynu warstwowego. Możesz zmienić miejsce przechowywania plików przy użyciu konfiguracji (lub równoważnej docker-root
z kontenerem), ale nie należy modyfikować żadnych plików w katalogach warstw. Są one starannie zarządzane przy użyciu platformy Docker (lub równoważnych poleceń).
Magazyn trwały
Mogą wystąpić przypadki, w których aplikacja musi mieć możliwość utrwalania danych w kontenerze. Możesz też przechowywać pliki w kontenerze, które nie zostały uwzględnione w czasie kompilacji kontenera. Magazyn trwały można udostępnić kontenerom systemu Windows na kilka sposobów:
- Wiązanie instalacji
- Nazwane woluminy
Wiązanie instalacji
Instalacje powiązania umożliwiają kontenerowi udostępnianie katalogu hostowi przez mapowanie katalogu na hoście na katalog wewnątrz kontenera. Instalacje powiązane są przydatne, jeśli chcesz umieścić pliki na komputerze lokalnym, które są dostępne po ponownym uruchomieniu kontenera i utracisz miejsce na pliki tymczasowe. Możesz też udostępnić plik wielu kontenerom.
Jeśli jednak chcesz, aby kontener działał na wielu komputerach z dostępem do tych samych plików, należy zamiast tego użyć nazwanego woluminu lub instalacji SMB (bloku komunikatów serwera). Ważne jest, aby nie wiązać katalogów poufnych instalacji, takich jak C:\
w niezaufanym kontenerze. To powiązanie umożliwiłoby zmianę plików na hoście, do którego zwykle nie miałby dostępu i mógł spowodować naruszenie zabezpieczeń.
W poniższym przykładzie pokazano polecenie platformy Docker służące do tworzenia instalacji powiązanej z folderem C:\ContainerData
na hoście w C:\data
kontenerze z domyślnym dostępem do odczytu/zapisu:
docker run -v c:\ContainerData:c:\data
Nazwane woluminy
Woluminy nazwane umożliwiają utworzenie woluminu według nazwy, przypisanie go do kontenera i ponowne użycie go później przy użyciu tej samej nazwy. Woluminy umożliwiają tworzenie lokalizacji specjalnej na hoście dedykowanej do przechowywania danych kontenera i zarządzanie nią. Nie musisz śledzić rzeczywistej ścieżki, w której została utworzona, po prostu nazwy.
Aparat platformy Docker w systemie Windows ma wbudowaną wtyczkę woluminów o nazwie , która może tworzyć woluminy na komputerze lokalnym. Jeśli chcesz używać nazwanych woluminów na wielu maszynach, wymagana jest inna wtyczka.
W poniższym przykładzie przedstawiono polecenia platformy Docker służące do tworzenia i uruchamiania kontenera o nazwie mycontainer mapowanego na wolumin c:data
lokalny:
docker volume create myvolume
docker run -v myvolume:c:\data microsoft/windowsservercore
Chociaż instalacje powiązań są zależne od struktury katalogów i systemu operacyjnego maszyny hosta, platforma Docker całkowicie zarządza woluminami. Woluminy mają kilka zalet w porównaniu z instalacjami powiązanymi:
- Woluminy są łatwiejsze do utworzenia kopii zapasowej lub migracji niż instalacje powiązane.
- Woluminy można zarządzać przy użyciu poleceń interfejsu wiersza polecenia platformy Docker lub interfejsu API platformy Docker.
- Woluminy działają zarówno w kontenerach systemów Linux, jak i Windows.
- Woluminy mogą być współużytkowane przez wiele kontenerów bezpieczniejszie.
- Sterowniki woluminów umożliwiają przechowywanie woluminów na hostach zdalnych lub dostawców usług w chmurze, szyfrowanie zawartości woluminów lub dodawanie innych funkcji.
- Nowe woluminy mogą mieć zawartość wstępnie wypełniona przez kontener.
Ponadto woluminy są często lepszym wyborem niż utrwalanie danych w warstwie zapisywalnej kontenera (miejsce tymczasowe). Wolumin nie zwiększa rozmiaru kontenerów korzystających z niego (podobnie jak instalacja powiązania), a zawartość woluminu istnieje poza cyklem życia danego kontenera.