Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Můžete mít případy, kdy je důležité, aby aplikace dokázala uchovávat data v kontejneru nebo chcete zobrazit soubory do kontejneru, který nebyl zahrnut v době sestavení kontejneru. Trvalé úložiště je možné dát kontejnerům několika způsoby:
- Připojení vazby
- Pojmenované svazky
Docker má skvělý přehled o tom, jak používat svazky, takže je lepší si to nejprve přečíst. Zbytek této stránky se zaměřuje na rozdíly mezi Linuxem a Windows a poskytuje příklady ve Windows.
Připojení vazby
Připojení typu bind umožňují kontejneru sdílet adresář s hostitelem. To je užitečné, pokud chcete, aby se soubory ukládaly na místním počítači, které jsou k dispozici při restartování kontejneru, nebo ho chcete sdílet s více kontejnery. Pokud chcete, aby kontejner běžel na více počítačích s přístupem ke stejným souborům, měl by se místo toho použít pojmenovaný svazek nebo připojení SMB.
Poznámka:
Připojení svazků přímo na sdílené svazky clusteru (CSV) není podporováno. Virtuální počítače, které fungují jako hostitel kontejneru, se mohou spouštět na svazku CSV.
Povolení
Model oprávnění použitý pro připojení disků se liší podle úrovně izolace vašeho kontejneru.
Kontejnery používající izolaciHyper-V používají jednoduchý model oprávnění jen pro čtení nebo pro čtení i zápis. K souborům se přistupuje na hostiteli pomocí LocalSystem účtu. Pokud v kontejneru dojde k odepření přístupu, ujistěte se, že LocalSystem má na hostiteli přístup k danému adresáři. Pokud se použije příznak pouze pro čtení, změny provedené ve svazku uvnitř kontejneru nebudou viditelné ani zachovány v adresáři na hostiteli.
Kontejnery Windows používající izolaci procesů se mírně liší, protože používají identitu procesu v rámci kontejneru pro přístup k datům, což znamená, že seznamy ACL souborů jsou dodrženy. Identita procesu spuštěného v kontejneru (ContainerAdministrator ve Windows Serveru Core a ContainerUser v kontejnerech Nano Serveru ve výchozím nastavení) se použije k přístupu k souborům a adresářům v připojeném svazku místo LocalSystema bude potřeba udělit přístup k používání dat.
Vzhledem k tomu, že tyto identity existují pouze v kontextu kontejneru – ne na hostiteli, kde jsou uložené soubory – měli byste použít dobře známou skupinu zabezpečení, například Authenticated Users při konfiguraci seznamů ACL pro udělení přístupu ke kontejnerům.
Výstraha
Nemontujte citlivé adresáře, jako je C:\, do nedůvěryhodného kontejneru. To by umožnilo změnit soubory na hostiteli, ke kterému by normálně neměl přístup a mohlo by dojít k narušení zabezpečení.
Příklad použití:
-
docker run -v c:\ContainerData:c:\data:ROpro přístup jen pro čtení -
docker run -v c:\ContainerData:c:\data:RWpro přístup pro čtení i zápis -
docker run -v c:\ContainerData:c:\datapro přístup pro čtení i zápis (výchozí)
Symbolické odkazy
Symlinky se v kontejneru řeší. Pokud připojíte cestu hostitele ke kontejneru, který je symlink nebo obsahuje symlinky, kontejner k nim nebude mít přístup.
Připojení SMB
Ve Windows Serveru verze 1709 a novějších je funkce s názvem "Globální mapování SMB", která umožňuje připojit sdílenou složku SMB na hostitele a pak předat adresáře v této sdílené složce do kontejneru. Kontejner nemusí být nakonfigurovaný s konkrétním serverem, sdílenou složkou, uživatelským jménem nebo heslem – to vše se zpracovává na hostiteli. Kontejner bude fungovat stejně jako v případě, že měl místní úložiště.
Kroky konfigurace
Na hostiteli kontejneru globálně namapujte vzdálenou sdílenou složku SMB:
$creds = Get-Credential New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:Tento příkaz použije přihlašovací údaje k ověření pomocí vzdáleného serveru SMB. Pak namapujte cestu ke vzdálené sdílené složce na písmeno jednotky G: (může to být jakékoli jiné dostupné písmeno jednotky). Kontejnery vytvořené na tomto hostiteli kontejnerů teď můžou mít své datové svazky přiřazené k cestě na jednotce G:.
Poznámka:
Při použití globálního mapování protokolu SMB pro kontejnery mají všichni uživatelé na hostiteli kontejneru přístup ke vzdálené sdílené složce. Každá aplikace spuštěná na hostiteli kontejneru bude mít také přístup k mapované vzdálené sdílené složce.
Vytvořte kontejnery s datovými svazky namapovanými na globálně připojený SMB sdílený prostor docker run -it --name demo -v g:\ContainerData:c:\AppData1 mcr.microsoft.com/windows/servercore:ltsc2019 cmd.exe
Uvnitř kontejneru bude c:\AppData1 namapováno do adresáře "ContainerData" vzdáleného sdílení. Veškerá data uložená na globálně mapované vzdálené sdílené složce budou dostupná pro aplikace uvnitř kontejneru. Ke sdíleným datům může získat přístup pro čtení a zápis více kontejnerů pomocí stejného příkazu.
Tato globální podpora mapování SMB je funkce na straně klienta SMB, která může fungovat nad jakýmkoli kompatibilním serverem SMB, včetně:
- Souborový server s distribuovaným navýšením kapacity na platformě Storage Spaces Direct (S2D) nebo tradiční SAN.
- Soubory Azure (sdílená složka SMB)
- Tradiční souborový server
- Implementace protokolu SMB třetí strany (např. zařízení NAS)
Poznámka:
Globální mapování protokolu SMB nepodporuje složky oboru názvů DFS. Pokud například namapujete kořenovou sdílenou složku DFSN pomocí New-SmbGlobalMapping -LocalPath Z: -RemotePath \\contoso.com\share1', při pokusu o čtení cílových složek kořene se vrátí chyba "Síťové umístění není dostupné."
Pojmenované svazky
Pojmenované svazky umožňují vytvořit svazek podle názvu, přiřadit ho ke kontejneru a později ho znovu použít podle stejného názvu. Nemusíte sledovat skutečnou cestu, kde byla vytvořena, jen název. Engine Dockeru ve Windows má integrovaný pojmenovaný plug-in svazků, který může vytvářet svazky na místním počítači. Pokud chcete použít pojmenované svazky na více počítačích, je potřeba další plugin.
Příklad kroků:
-
docker volume create unwound– Vytvoření svazku s názvem unwound -
docker run -v unwound:c:\data microsoft/windowsservercore– Spuštění kontejneru s namapovaným svazkem do c:\data - Zapište do kontejneru některé soubory do složky c:\data a pak kontejner zastavte.
-
docker run -v unwound:c:\data microsoft/windowsservercore– Spuštění nového kontejneru - Spusťte
dir c:\datav novém kontejneru – soubory jsou stále k dispozici.
Poznámka:
Windows Server převede názvy cílových cest (cestu uvnitř kontejneru) na malá písmena, tj. -v unwound:c:\MyData, nebo -v unwound:/app/MyData v kontejnerech Linuxu, což povede k mapování adresáře uvnitř kontejneru na c:\mydata, nebo /app/mydata v kontejnerech Linuxu, a jeho vytvoření, pokud ještě neexistuje.