4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

dockerのVolumeにマウントするNFSサーバーをdockerで構築する

Posted at

DockerのVolumeとしてNFSをマウントすることができるようです。

いっそのことNFSサーバーもDockerで構築したら面白いのではないかと思い、試してみました。

GitHubを探索

そもそも私はNFSサーバーを構築したことがありません。
なので、まずはネットでそのまま使えそうなDockerfileを探しました。

探してみたところ、、、GitHubにありました!!!
しかも、Google Cloud Platformのリポジトリ内に!

すごーい😀

docker-composeの作成

上記リポジトリの1/debian9/1.3/ディレクトリにDockerfiledocker-entrypoint.shがあります。
このまま使ってもいいですが、ベースイメージが古そうなのと、NFSのバージョンが固定だったので、Dockerfileだけ改変しました。あとはdocker-compose.yamlを作成しました。
(理解できませんでしたが、どうもdocker-entrypoint.shの中で色々処理をしてそうでした)

Dockerfile
# Copyright 2016 The Kubernetes Authors.
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# FROM gcr.io/google-appengine/debian9
FROM debian:bullseye-slim

ENV NFS_VERSION 1:1.3.4-2.1

ENV C2D_RELEASE 1.3.4

RUN set -x && \
    apt-get update && apt-get install -qq -y nfs-kernel-server && \
    rm -rf /var/lib/apt/lists/* && \
    mkdir /exports

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +rx /usr/local/bin/docker-entrypoint.sh

VOLUME /exports

EXPOSE 2049/tcp
EXPOSE 20048/tcp

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["/exports"]
docker-compose.yaml
version: '3'

services:
  nfs-server:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      TZ: '=JST-9'
      USERID: 1001
      GROUPID: 1001
    volumes:
      - ./exports:/exports
    privileged: true
    restart: always
    ports: 
      - "2049:2049"
      - "20048:20048"

起動

docker-compose up -d

これでNFSサーバーが起動します。

NFSサーバーをマウントする

NFSサーバーを使う側はvolumesをこのように指定します。deviceの指定はNFSサーバーのルートから見たディレクトリの位置です。ディレクトリは存在していたほうが良さそうです。

volumes:
  nfs-server:
    driver_opts:
      type: nfs
      o: "port=2049,addr=XX.XX.XX.XX,rw,nfsvers=4"
      device: ":/mount"
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?