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 listVýstup by měl vypadat takto:
[example@unixlinux.online ~]$ docker volume list DRIVER VOLUME NAME local example_volume [example@unixlinux.online ~]$
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:
[example@unixlinux.online ~]$ 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"
}
]
[example@unixlinux.online ~]$ 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:
[example@unixlinux.online ~]$ docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
example@unixlinux.online:/# ls
bin dev example_volume lib lib64 media opt root sbin sys usr
boot etc home lib32 libx32 mnt proc run srv tmp var
example@unixlinux.online:/# 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_dataadresář.cd example_data -
Vytvořte testovací soubor ve svazku zadáním následujícího
touchpříkaz.touch example_file.txt -
Poté opusťte kontejner.
exit -
Nyní spusťte další bitovou kopii dockeru se stejným připojeným svazkem.
debianobrá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
lsk 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.
lsMě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