Úvod
Svazky Docker jsou preferovaným mechanismem pro nastavení trvalého úložiště pro vaše kontejnery Docker. Svazky jsou existující adresáře na hostitelském souborovém systému připojené uvnitř kontejneru. Lze k nim přistupovat jak z kontejneru, tak z hostitelského systému.
Docker také umožňuje uživatelům připojovat adresáře sdílené přes systém vzdáleného sdílení souborů NFS. Svazky vytvořené pro tento účel používají vlastní ovladač NFS společnosti Docker, což eliminuje potřebu připojovat adresář NFS k hostitelskému systému.
Tento kurz vám ukáže, jak vytvořit a používat NFS Docker Volume.
Předpoklady
- Server NFS nainstalovaný a nakonfigurovaný na vzdáleném počítači.
- Docker nainstalovaný na místním počítači.
- Uživatelský účet s oprávněními root/sudo.
Vytvořit svazek NFS Docker Volume
Nejjednodušší způsob, jak vytvořit a spravovat svazky Dockeru, je pomocí docker volume příkaz a jeho dílčí příkazy.
Syntaxe pro vytvoření svazku NFS Docker zahrnuje dvě možnosti.
--drivermožnost definujelocalovladač svazku, který přijímá možnosti podobnémountpříkaz v Linuxu.- Položka
--optVolba je volána několikrát, aby poskytla další podrobnosti o svazku.
Podrobnosti zahrnují:
- Typ svazku.
- Režim zápisu.
- IP nebo webová adresa vzdáleného serveru NFS.
- Cesta ke sdílenému adresáři na serveru.
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[ip-address],rw \
--opt device=:[path-to-directory] \
[volume-name]
Níže uvedený příklad ukazuje vytvoření svazku NFS Docker s názvem nfs-volume . Svazek obsahuje /mnt/nfsdir adresář umístěný na serveru s rw (čtení/zápis) oprávnění. IP adresa serveru je 10.240.12.70 .
Úspěšně provedený příkaz vypíše název svazku.
Seznam dostupných svazků Docker.
docker volume ls Výstup uvádí svazek, který jste vytvořili.
Zkontrolujte svazek pomocí inspect dílčí příkaz.
docker volume inspect [volume-name] Výstup zobrazuje konfiguraci hlasitosti.
Připojit NFS do kontejneru
Chcete-li připojit svazek NFS do kontejneru, nainstalujte nfs-common balíček na hostitelském systému.
Začněte aktualizací repozitářů.
sudo apt update
Použijte APT k instalaci nfs-common balíček.
sudo apt install nfs-common Potvrďte, že chcete balíček nainstalovat, a počkejte na dokončení instalace.
Ke spuštění kontejneru použijte příkaz docker run. Určete svazek NFS a bod připojení v --mount sekce.
docker run -d -it \
--name [container-name] \
--mount source=[volume-name],target=[mount-point]\
[image-name]
Níže uvedený příklad připojuje svazek NFS s názvem nfs-volume do /mnt adresář v kontejneru.
Potvrďte, že byl svazek úspěšně připojen pomocí docker inspect příkaz.
docker inspect [container-name]
Mounts část výstupu obsahuje svazky namontované v kontejneru.
Zadejte bash shell prostředí kontejneru pomocí docker exec :
docker exec -it [container-name] /bin/bash
Vypište obsah /mnt adresář.
ls /mnt
Výstup zobrazuje soubory hostované v /mnt/nfsdir adresář na serveru.
Pokud vytvoříte soubor v kontejneru Docker, bude také přístupný v původním adresáři na serveru. Chcete-li otestovat, použijte dotykový příkaz k vytvoření prázdného souboru v /mnt adresář.
touch /mnt/docker1.txt Na serveru přejděte do adresáře, který jste sdíleli, a vypište jeho obsah. Zobrazí se soubor vytvořený v kontejneru Docker.
Připojení svazků NFS pomocí Docker Compose
Pokud ke správě kontejnerů používáte Docker Compose, připojte svazek NFS jeho definováním v souboru YML.
Vytvořte soubor YML.
nano docker-compose.yml
Definujte svazek NFS v volumes sekce.
version: "3.2"
services:
[service-name]:
image: [docker-image]
ports:
- "[port]:[port]"
volumes:
- type: volume
source: [volume-name]
target: /nfs
volume:
nocopy: true
volumes:
[volume-name]:
driver_opts:
type: "nfs"
o: "addr=[ip-address],nolock,soft,rw"
device: ":[path-to-directory]"
Vytvořte a spusťte kontejner pomocí docker-compose up příkaz.