概要
nfs サーバを docker の nfs ボリュームとして使う方法はいろいろと紹介記事がありますが docker 上で nfs サーバ自体を動作させる記事が中々なかったので紹介します
環境
- Ubuntu 16.04 (Vagrant)
- docker 18.09.8
nfs サーバの構築
Dockerhub でいろいろと公開されているイメージがありますが今回は nfs-server-alpine を使ってみました
まずは nfs で共有するディレクトリを作成します
今回は vagrant ユーザで作成するのでサーバ側とクライアント側のマウントポイントは両方とも vagrant ユーザを所有者にする必要があります
sudo /nfsshare
sudo chown vagrant:vagrant /nfsshare
あとはそのディレクトリをマウントする nfs コンテナを起動するだけです
docker run -d -p 2049:2049 --name nfs --privileged -v /nfsshare:/nfsshare -e SHARED_DIRECTORY=/nfsshare itsthenetwork/nfs-server-alpine:latest
これで OK です
2049 を publish することで外部からも接続できるようになります
マウントできるか確認
確認も Ubuntu から行います
nfs-client が必要なのでインストールします
sudo apt -y install nfs-client
あとはマウントポイントの作成をしてマウントするだけです
sudo mkdir /mnt
sudo chown vagrant:vagrant /mnt
sudo mount.nfs4 -v 172.28.128.4:/ /mnt/
nfs サーバ側のマウントポイントは /
になるのでご注意ください
マウントが完了したらファイルが配置できるか確認します
touch /mnt/hoge
アンマウントする場合は umount コマンドを使います
sudo umount /mnt
Tips: docker for mac の場合は File Sharing を有効にする
sudo mkdir /nfsshare/
sudo chown -R hawksnowlog:staff /nfsshare/
Preferences -> File sharing からマウントするパスを追加する必要があります
今回は /nfsshare
というパスを追加しました
Tips: macOS Mojave でマウントする場合
Mojave から nfs をマウントする場合は少しコマンドが特殊です
sudo mkdir /Volumes/mnt
sudo mount_nfs -v -o vers=4 172.28.128.4:/ /Volumes/mnt/
デフォルトだと v3 になっているようなので -o
でバージョンを指定しましょう
マウントコマンドは mount_nfs
になります
また上記でマウントすると所有者が Ubuntu 上の vagrant:vagrant
になっているので macOS 側に存在しているユーザ ID とグループ ID に変更してあげましょう
最後に
nfs サーバを docker コンテナとして起動してみました
今回マウントした /nfsshare
の容量を増やせば nfs サーバの容量も増やせます
他のコンテナからマウントする場合は root 権限でも問題ないかもしれませんが基本的にはどのユーザがマウントするのかは意識したほうが良いと思います
0 件のコメント:
コメントを投稿