2022/03/26

NFSマウント後にDockerサービスが起動するように設定する

概要

私はDockerコンテナにdocker runコマンドの-v, --volumeコマンドでNFS上のディレクトリをマウントしています. この状態でOSを再起動すると,DockerサービスがNFSのマウント前に起動してしまい,Dockerコンテナが正常にrestartできない問題が発生していました. 本記事ではこの問題の解決方法として,systemdのdrop-inファイルを使用して,NFSがマウントされるまでDockerサービスが起動しないように設定する方法をメモしておきます.

本記事の解決方法に行き着くにあたっては,下記の記事が参考になりました.

私の開発環境は下記のとおりです.

OS Ubuntu 20.04.4 LTS (amd64)
Docker version 20.10.14, build a224086

NFSクライアントの設定

/etc/fstabには下記のように設定しています.systemdによるリモートファイルシステムの自動マウントの設定です.

設定変更した場合は,OSの再起動もしくはsudo mount /mnt/nas/dataでNFSをマウントします.

下記のコマンドで/mnt/nas/dataのマウントに対応するsystemdユニットを探します.ディレクトリパスのスラッシュ (/)をハイフン (-)に置き換えたものになっているようでした.

Dockerサービスの設定

drop-inファイルを格納するディレクトリを作成して,テキストエディタでdrop-inファイルを新規作成します.

drop-inファイル,wait-for-nfs.confには下記のように設定を記述します. 設定の詳しい解説については,概要に記載した参考記事をご覧ください.

Dockerサービスの再起動と動作確認

Dockerサービスを再起動します.Drop-Inの項目で,drop-inファイルを認識しているか確認します. 問題がなければ,OSを再起動した後は,NFSがマウントされてからDockerサービスが起動するようになっています.

0 件のコメント:

コメントを投稿