Soubory (a další data) uložené v kontejneru Docker nezůstanou zachovány, pokud je kontejner odstraněn. Chcete-li to překonat, Docker svazky a svázat připojení může být použito. Tato příručka pojednává o použití svazků Docker jako způsobu ukládání trvalých dat. Představte si svazky jako externí pevný disk; pokud je interní pevný disk vymazán, externí pevný disk si stále uchová svá vlastní data. Svazky jsou uloženy na hostiteli a jsou nezávislé na jakémkoli kontejneru nebo obrázku. Podle potřeby je lze připojit k různým kontejnerům, a protože jsou svazky odděleny od obrazu, nezvětšují velikost obrazu.
Než začnete
-
Pokud jste tak ještě neučinili, vytvořte si účet Linode a Compute Instance. Podívejte se na naše příručky Začínáme s Linode a Vytvoření výpočetní instance.
-
Při aktualizaci systému postupujte podle našeho průvodce nastavením a zabezpečením výpočetní instance. Můžete také chtít nastavit časové pásmo, nakonfigurovat název hostitele, vytvořit omezený uživatelský účet a posílit přístup SSH.
-
Nainstalujte Docker do svého systému.
-
Tato příručka předpokládá, že vám vyhovuje používání příkazového řádku systému Linux. Viz Používání terminálu.
-
Tato příručka předpokládá, že máte základní znalosti o Dockeru. Kromě toho byste již měli mít na svém serveru nainstalovaný Docker a nasazený obraz Dockeru. Viz Úvod do Dockeru.
Vytvoření svazku dockeru
Chcete-li začít porozumět svazkům Docker Volumes, budete potřebovat svazek, na kterém budete pracovat.
-
Přihlaste se ke svému Linode (nebo jinému linuxovému serveru) pomocí buď SSH nebo Lish.
-
Vytvořte svazek zadáním následujícího příkazu, kterým nahradíte example_volume se štítkem pro váš svazek.
docker volume create example_volume
-
Ověřte, zda byl svazek vytvořen.
docker volume list
Výstup by měl vypadat takto:
[[email protected] ~]$ docker volume list DRIVER VOLUME NAME local example_volume [[email protected] ~]$
Kontrola svazku dockeru
Pokud se chcete podívat na další podrobnosti o svazku, můžete použít docker volume inspect
příkaz:
docker volume inspect example_volume
Výstup by měl být podobný následujícímu:
[[email protected] ~]$ docker volume inspect example_volume
[
{
"CreatedAt": "2021-05-19T15:27:27Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/example_volume/_data",
"Name": "example_volume",
"Options": {},
"Scope": "local"
}
]
[[email protected] ~]$
Připojení svazku dockeru ke kontejneru
Aby data kontejneru zůstala zachována, musíte mít připojený svazek Docker pomocí --mount flag
v docker run
příkaz. Nahraďte [volume_name] s názvem vašeho svazku [cesta] s absolutní cestou, ke které chcete svazek v rámci kontejneru připojit, a [docker_image] s názvem vašeho obrázku.
docker run --mount source=[volume_name],destination=[path] [docker_image]
Jako příklad následující příkaz připojí svazek s názvem example_volume na cestu /example_volume
uvnitř kontejneru pomocí ubuntu
obrázek.
docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
Tento příkaz spustí bitovou kopii, připojí svazek a přihlásí uživatele jako root k obrazu Ubuntu. Jakmile jste jako root, můžete ověřit, že je „example_volume“ připojen pouze pomocí ls
. Výstup toho všeho by měl vypadat nějak takto:
[[email protected] ~]$ docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
[email protected]:/# ls
bin dev example_volume lib lib64 media opt root sbin sys usr
boot etc home lib32 libx32 mnt proc run srv tmp var
[email protected]:/#
Kopírování a sdílení souborů mezi kontejnery
Docker Volumes také umožňuje sdílení mezi kontejnery.
-
Připojte svazek podle pokynů v části Připevnění svazku dockeru ke kontejneru. Zde je příklad použitý dříve:
docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
-
Změňte adresář na
example_data
adresář.cd example_data
-
Vytvořte testovací soubor ve svazku zadáním následujícího
touch
příkaz.touch example_file.txt
-
Poté opusťte kontejner.
exit
-
Nyní spusťte další bitovou kopii dockeru se stejným připojeným svazkem.
debian
obrázek je použit v příkladu níže.docker run -it --name=example_2 --mount source=example_volume,destination=/example_volume debian
-
V novém kontejneru (nazývaném „example_2“, pokud používáte příkaz podobný tomu výše uvedenému) kontejneru přejděte do adresáře svazku.
cd example_volume
-
Zadejte
ls
k zobrazení souboru.ls
Připojení adresáře z vašeho Linode do kontejneru
Místo vytváření nového svazku můžete také připojit adresář z vašeho Linode (nebo jiného systému) do kontejneru Docker. Toho se dosáhne prostřednictvím připojení a je užitečné, když chcete ukládat a přistupovat k souborům kontejneru přímo ze systému. V porovnání se svazky mají připojení připojení omezenou funkčnost.
-
Přihlaste se ke svému Linode (nebo jinému linuxovému serveru) pomocí buď SSH nebo Lish.
-
Ke spuštění Dockeru použijte následující příkaz, který nahradí [místní-adresář] s absolutní cestou k adresáři ve vašem Linode, který chcete připojit (použijte
$(pwd)
pro připojení aktuálního adresáře). Poté nahraďte [adresář připojení] s absolutní cestou ve vašem kontejneru, kde chcete získat přístup k místním souborům, a nahradit [image] s obrazem Docker, který chcete použít.docker run --rm -it -v [local-directory]:[mount-directory] [image]
-
Jste automaticky přihlášeni do kontejneru. Přejděte do adresáře pro připojení a zobrazte soubory.
ls
Měli byste vidět všechny soubory, které jste uložili v místním adresáři.
Další čtení
V Docker Volumes je toho mnohem víc, než se zde můžeme zabývat, a každý případ použití bude jiný. Dvě skvělá místa, kde se o tom můžete dozvědět více, jsou na samotném webu Docker’s Docs:
-
Použijte svazky v Docker Docs
-
Odstraňování problémů s chybami svazku v Docker Docs
Další informace
Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.
- Používejte svazky v Docker Docs
- Odstraňování problémů s chybami svazku v Docker Docs