nfs4のサーバー機能をコンテナで実現する方法
1.概要
Dockerを利用してnfs4のサーバー機能をコンテナで実現する方法を調べました。参考資料を参照してdocker-composeで起動できて、クライアントからファイルのread/writeができるようにしました。クライアントはDockerを可動させているubuntu-20.04 Desktopです。/home/usernameにディレクトリを作成し、これをnfs4のコンテナから共有設定します。この内容を記述します。
2.詳細
作成した手順は以下の通りです。
(a) ubuntu-20.04にdocker, docker-composeを導入
(b) uid=1000, gid=1000のusernameに/home/username/nfsディレクトリを作成
(c) Dockerfile、docker-compose.yml作成して、コンテナ起動
(d) nfsクライアント導入、nfs mount
(e) 試験
(a) ubuntu-20.04にdocker, docker-composeを導入
$ sudo apt -y install docker.io
$ sudo apt -y install docker-compose
$ sudo usermod -aG docker $(whoami)
$ docker --version
$ docker-compose --version
PCを1度再起動します
(b) uid=1000, gid=1000のusernameに/home/username/nfsディレクトリを作成
$ mkdir /home/username/nfs
(c) Dockerfile、docker-compose.yml作成して、コンテナ起動
Dockerfile作成
FROM itsthenetwork/nfs-server-alpine
RUN mkdir /nfsshare
RUN chown 1000.1000 /nfsshare
docker-compose.yml作成
version: '3'
services:
nfs:
build:
context: .
privileged: true
volumes:
- /home/username/nfs:/nfsshare
environment:
- "SHARED_DIRECTORY=/nfsshare"
ports:
- "2049:2049"
コンテナ起動
$ docker-compose up -d
(d) nfsクライアント導入、nfs mount
$ sudo apt install nfs-client
コンテナのIPを調べます。
$ docker ps
$ docker exec -it ContainerID /bin/bash
ip -a
exit
ip=172.18.0.2に設定されていたとします。
$ sudo mount.nfs4 -v 172.18.0.2:/ /mnt
(e) 試験
$ touch /mnt/file-a
$ ls /home/username/nfs にfile-aが存在することを確認します
参考
[外部サイト参照]
・docker で nfs サーバを構築してみた
・itsthenetwork/nfs-server-alpine
コメント
コメントを投稿