はじめに
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
を使用してコンテナを作成して起動します コマンド。