Ú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.
--driver
možnost definujelocal
ovladač svazku, který přijímá možnosti podobnémount
příkaz v Linuxu.- Položka
--opt
Volba 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.