はじめに
Dockerボリュームは、Dockerコンテナーの永続ストレージをセットアップするための推奨メカニズムです。ボリュームは、コンテナ内にマウントされたホストファイルシステム上の既存のディレクトリです。コンテナとホストシステムの両方からアクセスできます。
Dockerを使用すると、ユーザーはNFSリモートファイル共有システムを介して共有されるディレクトリをマウントすることもできます。この目的で作成されたボリュームは、Docker独自のNFSドライバーを使用するため、ホストシステムにNFSディレクトリをマウントする必要がありません。
このチュートリアルでは、NFSDockerボリュームを作成して使用する方法を説明します。
前提条件
- リモートマシンにインストールおよび構成されたNFSサーバー。
- ローカルマシンにインストールされたDocker。
- root/sudo権限を持つユーザーアカウント。
NFSDockerボリュームの作成
Dockerボリュームを作成および管理する最も簡単な方法は、 docker volumeを使用することです。 コマンドとそのサブコマンド。
NFS Dockerボリュームを作成するための構文には、2つのオプションが含まれています。
-ドライバーコード>オプションはローカルを定義しますmountと同様のオプションを受け入れるボリュームドライバー Linuxのコマンド。-
-optボリュームに関する詳細を提供するために、オプションが複数回呼び出されます。
詳細は次のとおりです。
- ボリュームタイプ。
- 書き込みモード。
- リモートNFSサーバーのIPアドレスまたはWebアドレス。
- サーバー上の共有ディレクトリへのパス。
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[ip-address],rw \
--opt device=:[path-to-directory] \
[volume-name]
以下の例は、 nfs-volumeという名前のNFSDockerボリュームの作成を示しています。 。ボリュームには、 / mnt / nfsdirが含まれています rwを含むサーバー上にあるディレクトリ (読み取り/書き込み)権限。サーバーのIPアドレスは10.240.12.70です。 。
正常に実行されたコマンドは、ボリュームの名前を出力します。
利用可能なDockerボリュームを一覧表示します。
docker volume ls 出力には、作成したボリュームが一覧表示されます。
inspectでボリュームを検査します サブコマンド。
docker volume inspect [volume-name] 出力にはボリューム構成が表示されます。
コンテナにNFSをマウントする
NFSボリュームをコンテナにマウントするには、 nfs-commonをインストールします ホストシステム上のパッケージ。
リポジトリを更新することから始めます。
sudo apt update
APTを使用してnfs-commonをインストールします パッケージ。
sudo apt install nfs-common パッケージをインストールすることを確認し、インストールが完了するのを待ちます。
docker runコマンドを使用して、コンテナーを開始します。 -mountでNFSボリュームとマウントポイントを指定します セクション。
docker run -d -it \
--name [container-name] \
--mount source=[volume-name],target=[mount-point]\
[image-name]
以下の例では、 nfs-volumeという名前のNFSボリュームをマウントします / mntへ コンテナ内のディレクトリ。
docker inspect を使用して、ボリュームが正常にマウントされたことを確認します コマンド。
docker inspect [container-name]
マウント 出力のセクションには、コンテナにマウントされたボリュームが含まれています。
docker execを使用してコンテナ環境のbashシェルに入ります :
docker exec -it [container-name] /bin/bash
/ mntの内容を一覧表示します ディレクトリ。
ls /mnt
出力には、 / mnt / nfsdirでホストされているファイルが表示されます サーバー上のディレクトリ。
Dockerコンテナ内にファイルを作成すると、サーバーの元のディレクトリからもアクセスできるようになります。テストするには、touchコマンドを使用して / mntに空のファイルを作成します ディレクトリ。
touch /mnt/docker1.txt サーバーで、共有したディレクトリに移動し、その内容を一覧表示します。 Dockerコンテナに作成されたファイルが表示されます。
DockerComposeを使用したNFSボリュームのマウント
Docker Composeを使用してコンテナーを管理する場合は、YMLファイルで定義してNFSボリュームをマウントします。
YMLファイルを作成します。
nano docker-compose.yml
ボリュームでNFSボリュームを定義します セクション。
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]"
docker-compose upを使用してコンテナを作成して起動します コマンド。